2017-02-21 82 views
1

我有一個android應用程序,其中的圖像上傳到服務器。我正在使用翻新庫來上傳圖像。爲此,有一個標題部分,它是在調用時動態添加的access_token。Android Retrofit動態設置標題值

ApiInterface

@Headers({"source: android"}) 
    @Multipart 
    @POST("doImageUpload.php") 
    Call<ResponseBody> imageUpload(@Header("access_token") String accesstoken,@Part("username") RequestBody username, @Part("action") RequestBody action,@Part("image_data") RequestBody image_data ); 

ImageUpload功能

public void imageupload(String imagepath) 
{ 

    final ProgressDialog mProgressDialog = new ProgressDialog(this); 
    mProgressDialog.setIndeterminate(true); 
    mProgressDialog.setMessage("Loading..."); 
    mProgressDialog.show(); 
    String action = "imageUpload"; 

    String access = mPreferences.getString("accesstoken",""); 
    ApiInterface apiService = 
      ApiClient.getClient().create(ApiInterface.class); 
    final String TAG = "Image Upload"; 

    MediaType type = MediaType.parse("text/plain; charset=utf-8"); 


    Call<ResponseBody> call = apiService.imageUpload(@Header(RequestBody.create(type,mPreferences.getString("accesstoken", ""))) 
      RequestBody.create(type,mPreferences.getString("UserName", "")),RequestBody.create(type,imagepath),RequestBody.create(type,action)); 

    call.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody>call, Response<ResponseBody> response) { 
      ResponseBody ResponseBody = response.body(); 
      Log.d("requrl",response.raw().request().url().toString()); 
      Log.d(TAG, "signup" + ResponseBody.toString()); 


      if (mProgressDialog.isShowing()) 
       mProgressDialog.dismiss(); 

      try { 

       JSONObject obj = new JSONObject(response.body().string()); 

       Log.d("chkva","--"+obj.getBoolean("status")); 


       } 


      } catch (Exception exception){ 

       Log.d("Error123","sad"+exception.getMessage()); 

      } 

     } 

     @Override 
     public void onFailure(Call<ResponseBody>call, Throwable t) { 
      // Log error here since request failed 
      Log.e(TAG, t.toString()); 
     } 
    }); 

} 

我是的access_token存儲在共享的偏好,我有這個添加的access_token的圖片上傳function.I不知道無論我是否使用正確的方法或不添加標題。在這種情況下,任何人都可以幫助我。

預先感謝您

回答

1

PARAM的imageUpload()頭類型爲字符串,你只需要填寫一個String頭。

Call<ResponseBody> call = apiService.imageUpload(mPreferences.getString("accesstoken", ""), 
      RequestBody.create(type,mPreferences.getString("UserName", "")),RequestBody.create(type,imagepath), RequestBody.create(type,action)); 
+0

你可以參考:https://futurestud.io/tutorials/retrofit-add-custom-request-header – Yat3s