httpclient4.3.1 SSL(https)验证

发布于 2021-11-24 16:37:45 字数 69 浏览 1023 评论 4

求大神关于httpclient4.3.1 的SSL(https)验证,网上的都是此版本以前的,悲剧,自己对这方面又不熟悉,所以请教各位大神

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

少女净妖师 2021-11-30 10:30:06

好像不太好使用

悟红尘 2021-11-30 10:22:14

其实有“赞”的,比如那个“有帮助”,或者“最佳答案”。。呵呵。

路还长,别太狂 2021-11-28 21:28:58

非常感谢,如果有赞,一定给你一个

心舞飞扬 2021-11-26 14:51:11

猜测你是想用httpclient4.3.1实现ssl的请求连接。SSL是需要客户端安装证书的,相信这个你应该了解。

所以我回答这个问题,如果回答不对,请谅解:

如何客户端不安装证书的情况下,使用httpclient4.3.1实现SSL的连接?

首先你应该google过,stackflow上面给出了N中解答,基本方法就是信任所有证书,但是其中你找不到合适4.3.1的方式,我曾经也这样过,下面的这段代码应该可以解决这个疑惑(一个完整的静态方法,返回信任所有证书的HttpClient对象):

import javax.net.ssl.SSLContext;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
/**
 * 
 * @author Sayi
 *
 */
public abstract class SSLUtils {

	public static CloseableHttpClient createSSLInsecureClient() {
		try {
			SSLContext sslContext = new SSLContextBuilder()
                                .loadTrustMaterial(null, new TrustStrategy() {
				//信任所有
				public boolean isTrusted(X509Certificate[] chain,
								String authType) throws CertificateException {
					return true;
				}
					}).build();
			SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
					sslContext);
			return HttpClients.custom().setSSLSocketFactory(sslsf).build();
		} catch (KeyManagementException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (KeyStoreException e) {
			e.printStackTrace();
		}
		return  HttpClients.createDefault();
	}

}

以上是个简单的静态方法,通过它获取HttpClient对象来替代 HttpClients.createDefault()来获取。

最后:网上搜不到你想要的,那就深入文档,文档是英文?那就深入API。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文