retrofit图片上传,需要添加必填的参数,参数服务器收不到怎么办?
用retrofit封装了一个图片上传,但是服务器除了要求上传图片还要求上传一些text内容,想用一个@PartMap 封装起来,结果参数无法传到服务器,服务器一直返回上传的参数找不到....求各位大神帮忙看一下
public Observable<T> uploadImage(final String url, final Map<String, File> files, final Map<String,String> values, Class<T> clazz
, Scheduler subscribeScheduler, Scheduler observeScheduler){
return new Proxy<T>(){
@Override
Call<String> makeCall() {
Map<String, RequestBody> map = new HashMap<>();
//这里是把传入的图片和参数封装到一个Map<String,requestBody>里面
for(Map.Entry<String, File> entry : files.entrySet()){
map.put( "image\";filename=\"" + entry.getKey()
,RequestBody.create(MediaType.parse("image/*"),entry.getValue()));
}
for(Map.Entry<String, String> entry1 : values.entrySet()){
map.put(entry1.getKey()
,RequestBody.create(MediaType.parse("plain/text"),String.valueOf(entry1.getValue())));
}
return retrofit.create(HttpServiceRest.class).uploadImage(url,map);
}
@Override
void onNext(Subscriber<? super T> subscriber, T result) {
subscriber.onNext(result);
}
@Override
void onError(Subscriber<? super T> subscriber) {
subscriber.onError(new IllegalAccessException(HttpErrorCode.ERROR_UPLOADIAMGE));
}
}.create(subscribeScheduler,observeScheduler,clazz);
}
接口
/**
* 图片文件上传
* @param url
* @param values
* @return
*/
@POST
@Multipart
Call<String> uploadImage(@Url String url,@PartMap Map<String, RequestBody> files);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论