为了账号安全,请及时绑定邮箱和手机立即绑定

有大佬遇到过这个问题吗:使用Retrofit上传文件并且携带参数,为什么这样不行呢?大佬们有什么好的建议?

有大佬遇到过这个问题吗:使用Retrofit上传文件并且携带参数,为什么这样不行呢?大佬们有什么好的建议?

狐的传说 2019-06-21 16:18:35
1.Retrofit接口定义:@Multipart@POST(RequestUrl.BANK_CARD_INFO)ObservablebankCardInfo(@PartMultipartBody.Partfile);2.使用:StringtraceId=UUID.randomUUID().toString();//随机生成唯一traceIdStringpath=selectList.get(0).getPath();//Log.d(TAG,"onActivityResult:1616="+path);Filefile=newFile(path);RequestBodyfileBody=RequestBody.create(MediaType.parse("image/*"),file);//RequestBodyrequestBody=RequestBody.create(MediaType.parse("multipart/form-data"),file);RequestBodytraceBody=RequestBody.create(MediaType.parse("multipart/form-data"),file);//RequestBodyfileRQ=RequestBody.create(MediaType.parse("multipart/form-data"),file);//MultipartBody.Partpart=MultipartBody.Part.createFormData("picture",file.getName(),fileRQ);Toast.makeText(this,"1933="+traceId,Toast.LENGTH_SHORT).show();RequestBodybo=newMultipartBody.Builder().addFormDataPart("trace_id",traceId,traceBody).addFormDataPart("image",file.getName(),fileBody).build();MultipartBody.PartmyBody=//MultipartBody.Part.createFormData();MultipartBody.Part.createFormData("image",file.getName(),bo);//name为传递文件的键//todo:传递银行卡照片到智趣,返回银行卡信息RxManager.getMethod().bankCardInfo(myBody).compose(RxUtil.schedulers(this)).subscribe(newRxCallback(this){@OverridepublicvoidonSuccess(Objecto,Stringmsg){Log.d(TAG,"onSuccess:获取银行卡信息成功");}});break;}
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

1.定义请求:1个header参数+1个请求参数+1个文件
publicinterfaceHttpService{
@Multipart
@POST("your_url")
Observablefunc(
@Header("your_http_header_1")Stringheader,
@Part("your_param_1")RequestBodyparam,
@PartMultipartBody.Partfile);
}
2.调用请求:请求参数为文本数据
finalMediaTypeMEDIA_TYPE_TEXT=MediaType.parse("text/plain");
RequestBodyparam=RequestBody.create(MEDIA_TYPE_TEXT,“yourtext”);
Filefile=??
StringcontentType=??//获取file对应的MimeType
RequestBodyrequestFile=RequestBody.create(MediaType.parse(contentType),file);
MultipartBody.Partbody=MultipartBody.Part.createFormData("your_file_1",file.getName(),requestFile);
Observablerequest=httpService.func("header1",param,body);
//TODO...
                            
查看完整回答
反对 回复 2019-06-21
  • 2 回答
  • 0 关注
  • 842 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号