【发布时间】:2026-01-08 03:05:02
【问题描述】:
HttpClient 4.3 在org.apache.http.conn.ssl.SSLConnectionSocketFactory 中有三个静态变量:
- STRICT_HOSTNAME_VERIFIER
- BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
- ALLOW_ALL__HOSTNAME_VERIFIER
在将依赖项升级到 HttpClient 的 4.4 版本时,我看到上述所有常量都已弃用。 JavaDoc 中的弃用说明提到使用org.apache.http.conn.ssl.DefaultHostnameVerifier。阅读文档,我假设DefaultHostnameVerifier 是STRICT_HOSTNAME_VERIFIER 的直接替代品。 ALLOW_ALL__HOSTNAME_VERIFIER 也很容易实现:
package org.wiztools.restclient.http;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
/**
*
* @author subwiz
*/
public class AllowAllHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String string, SSLSession ssls) {
return true;
}
}
STRICT_HOSTNAME_VERIFIER 和 BROWSER_COMPATIBLE_HOSTNAME_VERIFIER 之间存在细微差别(来自 JavaDoc):
BROWSER_COMPATIBLE 和 STRICT 之间的唯一区别是带有 BROWSER_COMPATIBLE 的通配符(例如“*.foo.com”)匹配所有子域,包括“a.b.foo.com”。
我们是否有现成的用于 httpclient 4.4 的 BROWSER_COMPATIBLE 主机名验证器?
【问题讨论】:
标签: java apache-httpclient-4.x