我尝试上传带有下一个要求的POST请求的图片:
参数名称:imageFile
参数类型:文件
要上传的文件。它必须作为multipart部分包含在请求的主体中,其中value = image和type = image /*.
这是请求定义:
@Multipart
@POST("sample/uploadImage")
Call<ImageResponse> UploadImage(@Part MultipartBody.Part file);
这是代码:
RequestBody fbodyRequest = RequestBody.create(MediaType.parse("image/*"), destination);
[...]
RetrofitInterface apiService =
retrofit.create(RetrofitInterface.class);
Call<ImageResponse> call = apiService.UploadImage(fbodyRequest);
call.enqueue(new Callback<ImageResponse>() {...
提前致谢。
答案 0 :(得分:0)
您可以尝试使用以下代码上传文件类型的图片。
public interface RetrofitInterface {
@Multipart
@POST("v1/photo/{deviceid}/")
public Call<PhotoModel> photoValues(@Path("deviceid") String deviceid, @Query("key") String key, @Part MultipartBody.Part filePart)
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(50000, TimeUnit.SECONDS)
.connectTimeout(50000, TimeUnit.SECONDS)
.build();
public static final Retrofit retrofit = new Retrofit.Builder()
.baseUrl(AppConstants.mBaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
}
首先获取图像文件并转换为FilePart类型然后我们才能 通过改造api发送。它会正常工作。
RetrofitInterface service = RetrofitInterface.retrofit.create(RetrofitInterface.class);
Call<PhotoModel> call = service.photoValues(deviceid, AppConstants.mApiKey, filePart);
call.enqueue(new Callback<PhotoModel>() {
@Override
public void onResponse(Call<PhotoModel> call, Response<PhotoModel> response) {
.....
}
@Override
public void onFailure(Call<PhotoModel> call, Throwable t) {
.....
}
});