java - Apache http 客户端 4.4 : HostnameVerifier transition from 4. 3.x

标签 java apache-httpclient-4.x

HttpClient 4.3 在 org.apache.http.conn.ssl.SSLConnectionSocketFactory 中有三个静态变量:

  1. STRICT_HOSTNAME_VERIFIER
  2. BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
  3. ALLOW_ALL__HOSTNAME_VERIFIER

当将依赖项升级到 HttpClient 4.4 版时,我发现上述所有常量都已弃用。 JavaDoc 中的弃用说明提到使用 org.apache.http.conn.ssl.DefaultHostnameVerifier。阅读文档,我假设 DefaultHostnameVerifierSTRICT_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_VERIFIERBROWSER_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/

相关文章:

java - Http POST 失败,状态代码 : 406 and with status: Not Acceptable

java - 使用 Apache Async Http 客户端进行异步响应流

java - 将文件发送到安全的 SOAP Web 服务

Java - HttpClient 库的 Http 身份验证 401 错误

java - 在 Flex 和 Java 中压缩和解压缩 XML

java - 无法将 ObjectMessage 发送到 IBM MQ

java - 将 int 分配给对象时,Java 会自动装箱吗?

java - 自定义相机不保存整个图像

java - TextView、EditText 和 Java 正则表达式

maven - httpclientSchemeRegistryFactory.createSystemDefault没有这样的方法错误