2014-03-06 2 views
2

Square의 Retrofit 라이브러리를 사용하여 요청의 일부분으로 해시를 만들고 싶습니다. RequestInterceptor는 요청에 대한 정보를 제공하지 않기 때문에 도움이되지 않으며 정보를 추가 할 수 있습니다. 해시를 만들려면 HTTP 동사, 모든 헤더 및 REST 경로에 액세스해야합니다. 해시는 Authorization 헤더에 추가됩니다. 아이디어가 있으십니까?Square의 Retrofit Android : 요청의 내용이있는 해시

답변

2

Retrofit 1.9.0에서이를 수행하려면 유일한 방법은 OkHttp 인터셉터 (https://github.com/square/okhttp/wiki/Interceptors)를 사용하는 것입니다. 다음 코드는 OkHttp 2.2.0을 사용합니다 :


    public class YourInterceptor implements Interceptor {

@Override public Response intercept(Chain chain) throws IOException { 

     Request request = chain.request(); 

     if (request != null) { 
      RequestBody body = request.body(); 
      URL requestURL = request.url(); 
      String method = request.method(); 
      Headers headers = request.headers(); 

      Request.Builder signedRequestBuilder = request.newBuilder(); 
      signedRequestBuilder.addHeader("Authorization", "Your Signature"); 
      request = signedRequestBuilder.build(); 
     } 
     return chain.proceed(request); 
    } 
} 

. . .

OkHttpClient okHttpClient = new OkHttpClient(); 
okHttpClient.interceptors().add(new YourInterceptor()); 
RestAdapter restAdapter = new RestAdapter.Builder() 
    .setClient(new OkClient(okHttpClient)) 
    .build();