Не удается загрузить файл JSON на сервер с Android с помощью retrofit2 с multipart - PullRequest
0 голосов
/ 13 октября 2018

Привет, у меня проблема, когда я пытаюсь загрузить 2 файла на сервер.Первый файл - это изображение, а второй файл - это файл, содержащий JSON.

Проблема в том, что на сервере я получаю только первый параметр из JSON.Я пытался с почтальоном с теми же файлами, и там, кажется, работает.

Код Android:

@Multipart
@POST("api/register")
Call<ResponseBody> registerUser(@Part MultipartBody.Part image, @Part MultipartBody.Part data);


  myService.registerUser(getImage1(), getJsonFile()).enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            if (response.isSuccessful()) {
                //response ok
            } else {
               //response not ok
            }
        }
        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
           //onFailure
        }
    });
}


   private MultipartBody.Part getImage1() {
    File file = new File(obj.getPicURL().toString());
    RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
    return MultipartBody.Part.createFormData("image", file.getName(), imageBody);
   }


 private MultipartBody.Part getJsonFile() {
    File jsonFile = new File(getApplicationContext().getFilesDir(), "toSend.JSON");
    Gson gson = new GsonBuilder().create();
    String json = gson.toJson(myObject);
    writeJsonToFile(activity, jsonFile, json);
    RequestBody jsonBody = RequestBody.create(MediaType.parse("multipart/form-data"), jsonFile);
    return MultipartBody.Part.createFormData("data", jsonFile.getName(), jsonBody);
 }

}

JSON файл:

{
"firstName": "First",
"lastName": "Tesr",
"username": "client",
"password": "123456aa",
"address": [{
    "adressloc": "SomeAddress",
    "city": "Bucharest"
}]

}

asdad

...