Image 如何使用改型2.0仅上载图像
尝试上载图像时,它会一直以字节而不是图像文件的形式发送。这是一个非常简单的调用,除了图像本身,我不需要发送任何参数。我不知道如何格式化日志,所以除非请求,否则我不会在这里发布错误 服务:Image 如何使用改型2.0仅上载图像,image,file,upload,retrofit,retrofit2,Image,File,Upload,Retrofit,Retrofit2,尝试上载图像时,它会一直以字节而不是图像文件的形式发送。这是一个非常简单的调用,除了图像本身,我不需要发送任何参数。我不知道如何格式化日志,所以除非请求,否则我不会在这里发布错误 服务: public interface FileUploadService { @Multipart @POST("upload_profile_picture") Call<ResponseBody> uploadProfilePicture(@Part("profile_picture") Requ
public interface FileUploadService {
@Multipart
@POST("upload_profile_picture")
Call<ResponseBody> uploadProfilePicture(@Part("profile_picture") RequestBody file);
}
公共接口文件上传服务{
@多部分
@帖子(“上传个人资料图片”)
调用uploadProfilePicture(@Part(“profile_picture”)请求主体文件);
}
正在进行的调用(先前生成了一个文件,必须删除此代码,因为这样需要帖子主要是words..dumb..):
//从接口生成服务
FileUploadService=ServiceGenerator.createService(FileUploadService.class,this);
//从文件创建RequestBody实例
请求体请求文件=
create(MediaType.parse(“image/*”),imageFile);
Log.d(Log_标签,“格式文件”);
//最后,执行请求
Call Call=service.uploadProfilePicture(请求文件);
Log.d(Log_标签,“发送呼叫”);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用,
回应(回应){
Log.d(Log_标签“success”);
Log.d(Log_标记,response.toString());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
日志d(日志标签“故障”);
Log.e(Log_标记,t.getMessage());
}
});
MediaType.parse方法是否存在问题?我也尝试过“多部分/表单数据”、“图像/jpeg”和上面的方法,但都没有效果
服务器团队表示他们正在接收呼叫,只接收字节,没有图像文件
我一直得到400,因为它发送所有字节。我怎么能发这个?我需要作为多部分发送还是什么?从我所看到的,您只需要在方法中用@Body标记param,然后执行上面的操作,就可以了。有谁能告诉我为什么会这样?谢谢 这是改装2中的一个
编辑:在最终2.0版本中添加了对OkHttp的多部分正文的支持
为了使其正常工作,您需要先稍微更改一下界面:
@Multipart
@帖子(“上传个人资料图片”)
调用uploadProfilePicture(@Part MultipartBody.Part文件);
然后您必须创建部分
,并按如下方式进行调用:
MultipartBody.Part文件=MultipartBody.Part.createFormData(
“文件”,
imageFile.getName(),
create(MediaType.parse(“image/*”,imageFile));
Call Call=service.uploadProfilePicture(文件);
这是改装2中的一款
编辑:在最终2.0版本中添加了对OkHttp的多部分正文的支持
为了使其正常工作,您需要先稍微更改一下界面:
@Multipart
@帖子(“上传个人资料图片”)
调用uploadProfilePicture(@Part MultipartBody.Part文件);
然后您必须创建部分
,并按如下方式进行调用:
MultipartBody.Part文件=MultipartBody.Part.createFormData(
“文件”,
imageFile.getName(),
create(MediaType.parse(“image/*”,imageFile));
Call Call=service.uploadProfilePicture(文件);
// Generate the service from interface
FileUploadService service = ServiceGenerator.createService(FileUploadService.class, this);
// Create RequestBody instance from file
RequestBody requestFile =
RequestBody.create(MediaType.parse("image/*"), imageFile);
Log.d(LOG_TAG, "formed file");
// finally, execute the request
Call<ResponseBody> call = service.uploadProfilePicture(requestFile);
Log.d(LOG_TAG, "sending call");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call,
Response<ResponseBody> response) {
Log.d(LOG_TAG, "success");
Log.d(LOG_TAG, response.toString());
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d(LOG_TAG, "failure");
Log.e(LOG_TAG, t.getMessage());
}
});