Модифицированный вызов прекрасно работает с моим API, например:
@POST("addeventphoto")
Call<NewPhotoObject> listRepos(@Query("key1") String testKey);
RetrofitInterfaces.IPostNewMessage service = RetrofitClientInstance.getRetrofitInstance().create(RetrofitInterfaces.IPostNewMessage.class);
Call<NewPhotoObject> call = service.listRepos("hello");
call.enqueue(new Callback<NewPhotoObject>() {
@Override
public void onResponse(Call<NewPhotoObject> call, Response<NewPhotoObject> response) {
Log.d(TAG, "onResponse: " + response.body());
if(response.isSuccessful() && response.body() != null){
Log.d(TAG, "onResponse: " + response.body().getEvent_photo());
}
}
@Override
public void onFailure(Call<NewPhotoObject> call, Throwable t) {
Log.d(TAG, "onFailure: " + t);
}
});
Мой API сработал, и я получил ответ. Однако, как только я добавляю @Multipart
в свой интерфейс Retrofit ... мой API больше не запускается.
@Multipart
@POST("addeventphoto")
Call<NewPhotoObject> listRepos(@Query("key1") String testKey, @Part MultipartBody.Part image);
Использую ли я модификацию неправильно? Текущая версия:
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
Редактировать: Использование с MultipartBody.Part
File file = new File(imagePath);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestFile);
RetrofitInterfaces.IPostNewMessage service = RetrofitClientInstance.getRetrofitInstance().create(RetrofitInterfaces.IPostNewMessage.class);
Call<NewPhotoObject> call = service.listRepos("hello", body);
call.enqueue(new Callback<NewPhotoObject>() {
@Override
public void onResponse(Call<NewPhotoObject> call, Response<NewPhotoObject> response) {
Log.d(TAG, "onResponse: " + response.body());
if(response.isSuccessful() && response.body() != null){
Log.d(TAG, "onResponse: " + response.body().getEvent_photo());
}
}
@Override
public void onFailure(Call<NewPhotoObject> call, Throwable t) {
Log.d(TAG, "onFailure: " + t);
}
});