回答

1

我不知道你应该做这个(我个人没有看到添加自定义标头的连接请求正当理由),但是这是怎么了,这可能与做的HttpClient 4.3或更新版本

class MyHttpClientBuilder extends HttpClientBuilder { 

    @Override 
    protected ClientExecChain createMainExec(
      final HttpRequestExecutor requestExec, 
      final HttpClientConnectionManager connManager, 
      final ConnectionReuseStrategy reuseStrategy, 
      final ConnectionKeepAliveStrategy keepAliveStrategy, 
      final HttpProcessor proxyHttpProcessor, 
      final AuthenticationStrategy targetAuthStrategy, 
      final AuthenticationStrategy proxyAuthStrategy, 
      final UserTokenHandler userTokenHandler) { 

     final HttpProcessor myProxyHttpProcessor = new ImmutableHttpProcessor(new RequestTargetHost(), new HttpRequestInterceptor() { 
      @Override 
      public void process(HttpRequest request, HttpContext context) throws HttpException, IOException { 
       request.addHeader("Hello", "Mom says hi"); 
      } 
     }); 

     return super.createMainExec(requestExec, connManager, reuseStrategy, keepAliveStrategy, 
       myProxyHttpProcessor, targetAuthStrategy, proxyAuthStrategy, userTokenHandler); 
    } 
} 

HttpClientBuilder httpClientBuilder = new MyHttpClientBuilder(); 
CloseableHttpClient client = MyHttpClientBuilder.build(); 
+0

许多谢谢!为什么这么做:我正在交谈的代理需要一些指示来完成其工作。使用常规的HTTP请求,它会获取标题并从中继的请求中除去它们。使用HTTPS请求,除了使用CONNECT发送标头以外,没有别的办法。 –

+0

有人可能是太过创造性的HTTP协议 – oleg

+0

我接受了你的答案,但它似乎并没有工作。标题被添加,但仅限于加密流。任何想法? –

相关问题