2017-02-13 2 views
0

우리의 서명 알고리즘은 대상 호스트도 변경하여 HttpRequest을 업데이트합니다.Apache HttpClient에서 요청의 대상 호스트를 업데이트하는 방법은 무엇입니까?

그러나 org.apache.http.impl.execchain.ProtocolExec#execute은 송신 요청을 준비하고 HttpRequestInterceptor 인스턴스가 실행되기 전에 대상 호스트를 계산합니다. 따라서 HttpRequestInterceptor이 요청의 대상 호스트를 업데이트하더라도 요청은 원래 호스트로 전송됩니다.

요청 대상 호스트를 업데이트하여 요청을 업데이트 된 호스트로 보내려면 어떻게해야합니까?

저는 http 클라이언트 4.5.2를 사용하고 있습니다.

답변

0

프로토콜 집행을 장식하고 실행 파이프 라인

CloseableHttpClient client = new HttpClientBuilder() { 

    @Override 
    protected ClientExecChain decorateProtocolExec(final ClientExecChain protocolExec) { 
     return new ClientExecChain() { 
      @Override 
      public CloseableHttpResponse execute(
        final HttpRoute route, 
        final HttpRequestWrapper request, 
        final HttpClientContext clientContext, 
        final HttpExecutionAware execAware) throws IOException, HttpException { 

       HttpUriRequest newRequest = RequestBuilder.copy(request.getOriginal()) 
         .setUri("http://some-place-esle.com/") 
         .build(); 

       return protocolExec.execute(route, HttpRequestWrapper.wrap(newRequest), clientContext, execAware); 
      } 
     }; 
    } 
}.build(); 
를 아래로 통과 전에 원점 요청을 다시 작성하십시오
관련 문제