в моем приложении я должен отправить фотографию на сервер, и сервер выдаст trans_id
в ответе, но у меня есть 500 internal server error
. Я пытался с почтальоном, и все в порядке. Мой модифицированный интерфейс:
@Headers("Content-Type: application/json")
@Multipart
@POST("photo-mekanik")
Call<PhotoMekanik> getPhotoMekanik(@Part MultipartBody.Part mekanik,
@Part("machineid") RequestBody machineid,
@Header("Authorization") String authorization);
Основываясь на некоторых ответах по SO, я попытался добавить аннотацию @FormUrlEncoded
, но Multipart и @FormUrlEncoded
нельзя использовать вместе. В моем ретривере у меня есть:
public void sendPhotoMekanik(Callback<PhotoMekanik> photoMekanikCallback, MultipartBody.Part photoMekanik, RequestBody machineid, String authorization) {
Call<PhotoMekanik> photoMekanikCall = service.getPhotoMekanik(photoMekanik, machineid, authorization);
photoMekanikCall.enqueue(photoMekanikCallback);
, и мой обратный вызов для модификации:
private void UploadPhotoMekanik() {
SharedPreferences editor = getSharedPreferences(MY_PREFERENCE, MODE_PRIVATE);
String token = editor.getString("token", "");
Intent intent = getIntent();
machineid = Objects.requireNonNull(intent.getExtras()).getString("machineId");
RequestBody fileImage = RequestBody.create(file, MediaType.parse("image/png"));
MultipartBody.Part mImagePart = MultipartBody.Part.createFormData("mekanik", file.getName(), fileImage);
PostRetrivers uploadPhotoMekanik = new PostRetrivers();
Callback<PhotoMekanik> callback = new Callback<PhotoMekanik>() {
@Override
public void onResponse(Call<PhotoMekanik> call, Response<PhotoMekanik> response) {
System.out.println();
}
@Override
public void onFailure(Call<PhotoMekanik> call, Throwable t) {
Toast.makeText(PutWeeklyDatasActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
};
RequestBody mekID = RequestBody.create(machineid, MediaType.parse("text/plain"));
uploadPhotoMekanik.sendPhotoMekanik(callback, mImagePart, mekID, token);
}
Редактировать: я решил эту проблему, заменив: @Headers("Accept: application/json")
, но теперь я есть другая ошибка:
expected begin_object but was number at line 1 column 6 path $
Это запрос, когда я использую почтальон, он дает мне trans_id, который является только числом и не не содержит никаких скобок. Я не понимаю ошибки, потому что я новичок в модернизации. Моя модель:
public class PhotoMekanik implements Serializable {
@SerializedName("machineid")
private String machineid;
@SerializedName("mekanik")
private String mekanik;
@SerializedName("trans_id")
private String trans_id;
public PhotoMekanik(String machineid, String mekanik, String trans_id) {
this.machineid = machineid;
this.mekanik = mekanik;
this.trans_id = trans_id;
}
public String getMachineid() {
return machineid;
}
public void setMachineid(String machineid) {
this.machineid = machineid;
}
public String getMekanik() {
return mekanik;
}
public void setMekanik(String mekanik) {
this.mekanik = mekanik;
}
public String getTrans_id() {
return trans_id;
}
public void setTrans_id(String trans_id) {
this.trans_id = trans_id;
}
}