【发布时间】:2017-03-03 12:20:14
【问题描述】:
朋友们,请帮帮我,我是改装新手代码
改造代码
Retrofit registerretrofit = new Retrofit.Builder().baseUrl(Constant.url).client(Constant.okClient()).addConverterFactory(GsonConverterFactory.create()).build();
Api registerapi = registerretrofit.create(Api.class);
String urlbitmap=Constant.getStringImage(profilebitmap);
Call<LoginResponse> registerresponse = registerapi.getregisterdetails(namestring, emailstring, passwordstring, phonestring, citystring, landnumstring, housenumstring, adrsstring1, adrssrtring2,urlbitmap, "Android", "DeviceToken", lat, lngitude);
registerresponse.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
// Constant.l(Constant.getStringImage(profilebitmap));
try {
Constant.l(String.valueOf(response));
} catch (Exception e) {
Constant.l(e.toString());
}
/*Constant.l(String.valueOf(response));
if (response.body().getStatus().equals("success")) {
Session.createlogin(getApplicationContext(), response.body().getUserid(), response.body().getName(), response.body().getEmail());
Intent loginintent = new Intent(getApplicationContext(), Login.class);
loginintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(loginintent);
} else if (response.body().getStatus().equals("failure")) {
Constant.s(username, "Email Already Exists");
}*/
}
@Override
public void onFailure(Call<LoginResponse> call, Throwable t) {
Constant.l(t.toString());
}
});
}
接口.java
@FormUrlEncoded
@POST("keemajson.php?action=register")
Call<LoginResponse> getregisterdetails(@Query("uname") String uname, @Query("email") String email, @Query("password") String password, @Query("phone") String phone, @Query("city") String city, @Query("landline") String landline, @Query("building_num") String building_num, @Query("address1") String address1, @Query("address2") String address2, @Field("image") String image, @Query("device_name") String device_name, @Query("device_token") String device_token, @Query("lat") String lat, @Query("lng") String lng);
Base64 方法
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] imagebytes = baos.toByteArray();
String uploadencodedImage = Base64.encodeToString(imagebytes, Base64.DEFAULT);
我得到的回应是
Response{protocol=http/1.0, code=500, message=Internal Server Error, url=http://54.202.3.127/keema/keemajson.php?action=register&uname=test2&email=tester2@gmail.com&password=123456&phone=1234567890&city=KKD&landline=0884237688&building_num=12-2-18&address1=Address1&address2=Address2&device_name=Android&device_token=DeviceToken&lat=16.9952685&lng=82.2450855}
我使用的这个多部分代码
Retrofit registerretrofit = new Retrofit.Builder().baseUrl("http://54.202.3.127/keema/").client(Constant.okClient()).addConverterFactory(GsonConverterFactory.create()).build();
Api registerapi = registerretrofit.create(Api.class);
File profilefile = new File("/storage/emulated/0/Pictures/Screenshots/Screenshot_2017-02-22-14-10-53.png");
RequestBody reqfile = RequestBody.create(MediaType.parse("image/*"), profilefile);
RequestBody actionrb = RequestBody.create(MediaType.parse("text/plain"), "register");
MultipartBody.Part body = MultipartBody.Part.createFormData("image", profilefile.getName(), reqfile);
RequestBody namerb = RequestBody.create(MediaType.parse("text/plain"), namestring);
RequestBody emailrb = RequestBody.create(MediaType.parse("text/plain"), emailstring);
RequestBody passwordrb = RequestBody.create(MediaType.parse("text/plain"), passwordstring);
RequestBody phonerb = RequestBody.create(MediaType.parse("text/plain"), phonestring);
RequestBody cityrb = RequestBody.create(MediaType.parse("text/plain"), citystring);
RequestBody adrssrb = RequestBody.create(MediaType.parse("text/plain"), adrsstring1);
RequestBody adrssrrb = RequestBody.create(MediaType.parse("text/plain"), adrssrtring2);
RequestBody landnumrb = RequestBody.create(MediaType.parse("text/plain"), landnumstring);
RequestBody housenumrb = RequestBody.create(MediaType.parse("text/plain"), housenumstring);
RequestBody devicenamerb = RequestBody.create(MediaType.parse("text/plain"), "Android");
RequestBody devicetokenrb = RequestBody.create(MediaType.parse("text/plain"), "Devicetoken");
RequestBody latrb = RequestBody.create(MediaType.parse("text/plain"), lat);
RequestBody lngrb = RequestBody.create(MediaType.parse("text/plain"), lngitude);
Call<ResponseBody> respbody = registerapi.getregisterdetails(actionrb,body, namerb, emailrb, passwordrb, phonerb, cityrb, adrssrb, adrssrrb, landnumrb, housenumrb, devicenamerb, devicetokenrb, latrb, lngrb);
respbody.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Constant.l(String.valueOf(response));
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Constant.l(t.toString());
}
});
}
Multipart 接口
@Multipart
@POST("keemajson.php")
Call<ResponseBody> getregisterdetails(@Part("action") RequestBody action,@Part MultipartBody.Part image,@Part("uname") RequestBody uname, @Part("email") RequestBody email, @Part("password") RequestBody password, @Part("phone") RequestBody phone, @Part("city") RequestBody city, @Part("landline") RequestBody landline, @Part("building_num") RequestBody building_num, @Part("address1") RequestBody address1, @Part("address2") RequestBody address2, @Part("device_name") RequestBody device_name, @Part("device_token") RequestBody device_token, @Part("lat") RequestBody lat, @Part("lng") RequestBody lng);
【问题讨论】:
-
您遇到的错误是什么?
-
你用multipart试过了吗?
-
是的,我尝试使用 multipart 但它不起作用
-
响应{protocol=http/1.0, code=500, message=Internal Server Error, url=54.202.3.127/keema/…}
-
这是我得到的回应
标签: java android json retrofit retrofit2