2017-02-21 13 views
1

私は画像がサーバにアップロードされるアンドロイドアプリケーションを持っています。私は画像をアップロードするために改造ライブラリを使用しています。そのために、呼び出しが行われたときに動的に追加される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機能

マイaccess_tokenは、共有の好みに保存されていると、私にはわからない画像アップロードfunction.Iにこのaccess_tokenはを追加する必要がありますされ
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()); 
     } 
    }); 

} 

私は正しいメソッドを使用しているかどうか、ヘッダーを追加するかどうか。誰もこの状況で私を助けることができます。

imageUpload()内のparamのヘッダタイプがSTRINGで事前

答えて

1

にありがとう、あなただけの文字列のヘッダーを埋める必要があります。

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

関連する問題