I'm having issues trying to upload images and other details to my server using the below code:
public static final String APP_JSON = "Content-Type: application/json";
@Multipart
@Headers({ApiClient.APP_JSON})
@POST("relatorio/{token}")
Call<JsonObject> uploadJson(@Path("token") String token, @Part("json") JsonObject auditoria, @Part List<MultipartBody.Part> files);
It always return error 400 due to SyntaxError: Unexpected token <br>;
However, if I send only the details as RequestBody it works.
I need to construct an array of images to upload as defined in my server; thus, I'm using it:
private List<MultipartBody.Part> prepare(){
Set<String> keys = JsonFormFragmentPresenter.imagesList.keySet();
List<MultipartBody.Part> parts = new ArrayList<>();
for(String k : keys){
for(String path : JsonFormFragmentPresenter.imagesList.get(k)){
if(!path.equals(null) && !path.equals("")){
File image = new File(path);
RequestBody requestFile = RequestBody.create(
MediaType.parse("multipart/form-data"), image
);
Log.e("Test", (requestFile == null) + "");
parts.add(MultipartBody.Part.createFormData("imagens", image.getName(), requestFile));
}
}
}
JsonFormFragmentPresenter.imagesList.clear();
return parts;
}
After that I make the call that is always returning 400:
Call<JsonObject> call = ApiClient.get().uploadJson(details.get(KEY_TOKEN), json, prepare());
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
Log.e("Status", new Gson().toJson(response));
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
Log.e("Status", "Faild");
Log.e("UPDATErr", new Gson().toJson(t));
}
});
Any hint on why it is not working?
Thank you,
You are using @Header annotation with Content-Type: application/json, but you need multipart POST request which uses different content type. Try to remove @Header annotation and replace it with @Multipart.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.