首页 > retrofit图片上传,需要添加必填的参数,参数服务器收不到怎么办?

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);    

【热门文章】
【热门文章】