0
我需要连接到读取CONNECT请求中标头的代理。我的意思是指在切换到HTTPS加密流之前,特别是与CONNECT一起传递的标头。Apache HttpClient:如何与CONNECT请求一起发送标头
HttpClient可以吗?其默认行为似乎是通过加密流推送所有标头。
我需要连接到读取CONNECT请求中标头的代理。我的意思是指在切换到HTTPS加密流之前,特别是与CONNECT一起传递的标头。Apache HttpClient:如何与CONNECT请求一起发送标头
HttpClient可以吗?其默认行为似乎是通过加密流推送所有标头。
我不知道你应该做这个(我个人没有看到添加自定义标头的连接请求正当理由),但是这是怎么了,这可能与做的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();
许多谢谢!为什么这么做:我正在交谈的代理需要一些指示来完成其工作。使用常规的HTTP请求,它会获取标题并从中继的请求中除去它们。使用HTTPS请求,除了使用CONNECT发送标头以外,没有别的办法。 –
有人可能是太过创造性的HTTP协议 – oleg
我接受了你的答案,但它似乎并没有工作。标题被添加,但仅限于加密流。任何想法? –