2017-08-30 35 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()); 
         } 
        }) 
相關問題