我想使用Apache HttpClient 5为一些单独的请求而不是其他请求配置一个HTTP代理.然而,RequestConfig.Builder.setProxy()
看起来是deprecated.Javadoc建议使用HttpRoutePlanner
,但看起来这是在全局HttpClient
级别操作的,而不是在请求级别操作的.
在HttpClient 5中,有没有办法在请求级别配置代理?
我想使用Apache HttpClient 5为一些单独的请求而不是其他请求配置一个HTTP代理.然而,RequestConfig.Builder.setProxy()
看起来是deprecated.Javadoc建议使用HttpRoutePlanner
,但看起来这是在全局HttpClient
级别操作的,而不是在请求级别操作的.
在HttpClient 5中,有没有办法在请求级别配置代理?
S determineRoute
法的一个论点是HttpContext
法.您可以使用它,特别是在扩展DefaultRoutePlanner
并覆盖其determineProxy
方法的情况下,因为这是(当前)determineRoute
实现的一部分:
HttpHost proxy = config.getProxy();
if (proxy == null) {
proxy = determineProxy(host, context);
}
对于每个请求,您现在可以显式地创建一个HttpContext
,将代理主机设置为属性,然后使用自定义的DefaultRoutePlanner
子类从HttpContext
中提取该代理.
但这确实意味着您需要 for each 请求单独显式配置代理.