2017-08-30 30 views
0

如何配置像图片改造工作如下与应用程序/ x-WWW窗体-urlencoded使用改装上传文件

enter image description here

这是我的代码:

// interface ImageUploadService 

    @Multipart 
    @POST("/api=upl_img_version_2&token={token}&img_cat=3&sum={sum}") 
    Observable<ServerResponse> uploadAvatar(@Path("token") String token, @Path("sum") String sum, @Part MultipartBody.Part file); 
    =========================================== 

    //File creating from selected URL 
    File file = new File(path); 

    // create RequestBody instance from file 
    RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); 

    // body part send to server 
    MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), requestFile); 

    view.showLoadingDialog(); 
    imageUploadService.uploadAvatar(token, sum, body) 
        .subscribeOn(Schedulers.io()) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(new Subscriber<ServerResponse>() { 
         @Override 
         public void onCompleted() { 
          view.hideLoadingDialog(); 
         } 

         @Override 
         public void onError(Throwable e) { 
          e.printStackTrace(); 
          view.hideLoadingDialog(); 
         } 

         @Override 
         public void onNext(ServerResponse serverResponse) { 
          Log.d("aaaaa", serverResponse.toString()); 
         } 
        }) 

然后用饱嗝套件捕捉请求,它不同于ios(工作),我没有任何想法或关键字。谢谢

回答

0

我刚刚找到一个解决方案,并希望帮助某人面对同样的问题,而不是删除此问题。

这里工作代码:

interface ImageUploadService { 
    //@Multipart 
    @POST("/api=upl_img_version_2&token={token}&img_cat=3&sum={sum}") 
    Observable<ServerResponse> uploadAvatar(@Path("token") String token, @Path("sum") String sum, @Body RequestBody file); // @Part => @Body 
} 

/////////////////////////////// 
File file = new File(path); 

// MediaType.parse("multipart/form-data") 
RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file); 
imageUploadService.uploadAvatar(token, sum, requestBody) 
        .subscribeOn(Schedulers.io()) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(new Subscriber<ServerResponse>() { 
         @Override 
         public void onCompleted() { 
          view.hideLoadingDialog(); 
         } 

         @Override 
         public void onError(Throwable e) { 
          e.printStackTrace(); 
          view.hideLoadingDialog(); 
         } 

         @Override 
         public void onNext(ServerResponse serverResponse) { 
          Log.d("aaaaa", serverResponse.toString()); 
         } 
        }) 
相关问题