本文介绍了apache httpclient 4.4:从4.3.x迁移HostnameVerifier的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

HttpClient 4.3 had three static variables in 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易于实现:

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

07-17 11:51
查看更多