在 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);
Run Code Online (Sandbox Code Playgroud)
我承认这个策略看起来很尴尬,我继承了这段代码:)。我确信在 4.2 中有更好的方法来做到这一点。
我希望升级到 4.3 并注意到DefaultHttpClient和ClientPNames现在分别被弃用HttpClientBuilder和RequestConfig。但是我找不到这样的方法来定义默认目标RequestConfig。
执行文档确实提到该输入目标参数可以接受空值,所以我确信仍然有一种方法可以促进这一点,但我正在努力弄清楚这一点:
target - 请求的目标主机。如果实现仍然可以确定路由,例如到默认目标或通过检查请求,则它们可以接受 null。