Сервер возвращает ответ 500 после загрузки файла retrofit2 - PullRequest
0 голосов
/ 13 февраля 2019

Я работаю над приложением для Android, которое работает с кучей веб-сервисов.Я использую retrofit2 для всех остальных функций, и это почти идеально работает.За исключением загрузки файла, я отправляю файл (изображение в формате JPEG) и строку (описание).Я получаю ответ 500 от своего веб-сервиса, я проверил журналы и пытаюсь увидеть запрос, который отправляет приложение, но, к сожалению, журналы ошибок пусты.Кажется, что сервер apache отклоняет запрос, так как он может быть искажен.

Интерфейс определяется следующим образом

@Multipart
@POST("api/mobilesale/orders/{id}/documents/multipleUpload")
Call<ResponseBody> uploadDocument(@Header("Authorizarion") String token,
                                  @Part MultipartBody.Part file,
                                  @Path("id") int orderId,
                                  @Part("documentType") RequestBody document_type);

Метод загрузки определяется следующим образом

private void upload(File file, String documentType, String token, int orderId)
{
    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(LDLMobileDataService.BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
    MobileDataService serviceAPI = retrofit.create(MobileDataService.class);

    RequestBody requestBody = RequestBody.create(MediaType.parse(getContentResolver().getType(file_uri)), file);
    MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("document", file.getName(), requestBody);
    RequestBody documentType = RequestBody.create(MediaType.parse("text/plain"), documentType);

    Call<ResponseBody> call = serviceAPI.uploadDocument("Bearer "+ token, fileToUpload, orderId, documentType);

    call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                if(response.isSuccess())
                {
                    Toast.makeText(getApplicationContext(), "File Upload Success", Toast.LENGTH_LONG).show();
                }
                else {
                    Toast.makeText(getApplicationContext(), "File Upload Error", Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Toast.makeText(getApplicationContext(), "File Upload Failure", Toast.LENGTH_LONG).show();
            }
        });
}

Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...