apache httpclient 4.4:从4.3.x迁移HostnameVerifier [英] apache httpclient 4.4: HostnameVerifier transition from 4.3.x
问题描述
HttpClient 4.3在org.apache.http.conn.ssl.SSLConnectionSocketFactory
中具有三个静态变量:
HttpClient 4.3 had three static variables in 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
易于实现:
When upgrading the dependency to version 4.4 of HttpClient, I see that all the above constants are deprecated. The deprecation note in JavaDoc mentioned to use org.apache.http.conn.ssl.DefaultHostnameVerifier
. Reading the docs, I assume that DefaultHostnameVerifier
is a direct replacement to STRICT_HOSTNAME_VERIFIER
. Also the ALLOW_ALL__HOSTNAME_VERIFIER
is easy to implement:
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)之间有细微的区别:
There is a subtle distinction between the STRICT_HOSTNAME_VERIFIER
and BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
(from JavaDoc):
BROWSER_COMPATIBLE和STRICT之间的唯一区别是,带有BROWSER_COMPATIBLE的通配符(例如"* .foo.com")与所有子域匹配,包括"a.b.foo.com".
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
主机名验证程序?
Do we have a readily available BROWSER_COMPATIBLE
hostname verifier for httpclient 4.4?
推荐答案
实际上,AllowAllHostnameVerifier 直接替换ALLOW_ALL__HOSTNAME_VERIFIER
,即
Actually, the javadoc of AllowAllHostnameVerifier gives a direct replacement for ALLOW_ALL__HOSTNAME_VERIFIER
, which is NoopHostnameVerifier .
这篇关于apache httpclient 4.4:从4.3.x迁移HostnameVerifier的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!