问题描述
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):
对于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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!