gpt4 book ai didi

java - 如何在 Apache HttpClient 4.3+ 中设置默认 HttpHost 目标?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:08 27 4
gpt4 key购买 nike

在 Apache HttpClient 4.2 中,可以创建一个 DefaultHttpClient 并设置一个主机,这样那些进行 execute 调用的人就不必在输入请求 URI 中提供主机信息,即:

HttpHost targetHost = new HttpHost(host, port, secure ? "https" : "http");      
DefaultHttpClient defaultHttp = new DefaultHttpClient(connectionManager);
defaultHttp.getParams().setParameter(ClientPNames.DEFAULT_HOST, targetHost);

我承认这个策略看起来很尴尬,我继承了这段代码:)。我确信在 4.2 中有更好的方法来做到这一点。

我希望升级到 4.3 并注意到 DefaultHttpClientClientPNames 现在都已弃用,取而代之的是 HttpClientBuilder RequestConfig 分别。但是,我找不到使用 RequestConfig 定义默认目标的方法。

Documentation for execute 确实引用了该输入目标参数可以接受 null,所以我确信还有一种方法可以促进这一点,但我正在努力解决这个问题:

target - the target host for the request. Implementations may accept null if they can still determine a route, for example to a default target or by inspecting the request.

最佳答案

这应该可以解决问题

HttpRoutePlanner rp = new DefaultRoutePlanner(DefaultSchemePortResolver.INSTANCE) {

@Override
public HttpRoute determineRoute(
final HttpHost host,
final HttpRequest request,
final HttpContext context) throws HttpException {
HttpHost target = host != null ? host : new HttpHost("some.default.host");
return super.determineRoute(target, request, context);
}
};

CloseableHttpClient client = HttpClients.custom()
.setRoutePlanner(rp)
.build();

关于java - 如何在 Apache HttpClient 4.3+ 中设置默认 HttpHost 目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com