Получение java.io.EOFException: конец ввода в строке 1 столбца 1 при загрузке изображения на сервер с использованием модификации 2 - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь загрузить изображение на сервер с помощью составного запроса Retrofit 2 и парсера Gson. Я проверил API почтальоном и он работает нормально, но в Android я получаю упомянутое исключение

Вот мойкод

это модифицированная зависимость

implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'

API-клиент

public class ApiClient {

public static final String BASE_URL = "http://www.AAbd.com/api/";
private static Retrofit retrofit = null;


public static Retrofit getClient() {
    if (retrofit==null) {

        Gson gson = new GsonBuilder()
                .create();

        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
    return retrofit;
}

}

API-интерфейс

@POST("edit/Image")
@Multipart
Call<AuthModel> addImage (@Part("api_token") RequestBody api_token,
                                @Part("image") MultipartBody.Part image);

Модель

@Expose
@SerializedName("api_token_status")
private String api_token_status;
@Expose
@SerializedName("status")
private String status;
@Expose
@SerializedName("message")
private String message;


public String getMessage() {
    return message;
}

public String getApi_token_status() {
    return api_token_status;
}

public String getStatus() {
    return status;
}

Звонок по запросу

public void addImageRequest (Bitmap image) {
    try {
        File f = new File(getCacheDir(), "offf");
        f.createNewFile();
        Bitmap bitmap = image;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 0 /*ignored for PNG*/, bos);
        byte[] bitmapdata = bos.toByteArray();
        FileOutputStream fos = new FileOutputStream(f);
        fos.write(bitmapdata);
        fos.flush();
        fos.close();


        RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), f);
        MultipartBody.Part body = MultipartBody.Part.createFormData("image", f.getName(), reqFile);
        RequestBody tokenRequest = RequestBody.create(MediaType.parse("text/plain"), token2);
        apiInterface = ApiClient.getClient().create(ApiInterface.class);
        Call<AuthModel> call = apiInterface.addImage(tokenRequest, body);
        call.enqueue(new Callback<AuthModel>() {
            @Override
            public void onResponse(Call<AuthModel> call, Response<AuthModel> response) {
                AuthModel result = response.body();
                if(result != null) {
                    String status = result.getStatus();
                    String msg = result.getMessage();
                    if(status.equals("true")) {
                        Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
                        Log.e("errorIs", msg);
                    } else {
                        Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
                        Log.e("errorIs", msg);
                    }
                } else {
                    try {
                        //Toast.makeText(context, response.errorBody().string() , Toast.LENGTH_LONG).show();

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            @Override
            public void onFailure(Call<AuthModel> call, Throwable t) {
                Toast.makeText(MainActivity.this, t.toString(), Toast.LENGTH_LONG).show();
            }
        });

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

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

...