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):
The only difference between BROWSER_COMPATIBLE and STRICT is that a wildcard (such as "*.foo.com") with BROWSER_COMPATIBLE matches all subdomains, including "a.b.foo.com".
我们是否有适用于 httpclient 4.4 的现成的 BROWSER_COMPATIBLE
主机名 validator ?
最佳答案
实际上,AllowAllHostnameVerifier 的javadoc直接替换 ALLOW_ALL__HOSTNAME_VERIFIER
,即 NoopHostnameVerifier .
关于java - Apache http 客户端 4.4 : HostnameVerifier transition from 4. 3.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207694/