为什么80%的码农都做不了架构师?>>>   

之前做调用华为认证接口时,没有证书,使用此方法,实测可用;

调用自定义类:

        if (url.startsWith("https")) {Protocol myhttps = new Protocol("https",new MySecureProtocolSocketFactory(), 8445);Protocol.registerProtocol("https", myhttps);}String responseMsg = "";// 构造HttpClient的实例HttpClient httpClient = new HttpClient();httpClient.getParams().setContentCharset("GBK");// 构造PostMethod的实例PostMethod postMethod = new PostMethod(url);

自定义类:


import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;    import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;    import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;    public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {    private SSLContext sslcontext = null;    private SSLContext createSSLContext() {    SSLContext sslcontext=null;    try {    sslcontext = SSLContext.getInstance("SSL");    sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());    } catch (NoSuchAlgorithmException e) {    e.printStackTrace();    } catch (KeyManagementException e) {    e.printStackTrace();    }    return sslcontext;    }    private SSLContext getSSLContext() {    if (this.sslcontext == null) {    this.sslcontext = createSSLContext();    }    return this.sslcontext;    }    public Socket createSocket(Socket socket, String host, int port, boolean autoClose)    throws IOException, UnknownHostException {    return getSSLContext().getSocketFactory().createSocket(    socket,    host,    port,    autoClose    );    }    public Socket createSocket(String host, int port) throws IOException,    UnknownHostException {    return getSSLContext().getSocketFactory().createSocket(    host,    port    );    }    public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)    throws IOException, UnknownHostException {    return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);    }    public Socket createSocket(String host, int port, InetAddress localAddress,    int localPort, HttpConnectionParams params) throws IOException,    UnknownHostException, ConnectTimeoutException {    if (params == null) {    throw new IllegalArgumentException("Parameters may not be null");    }    int timeout = params.getConnectionTimeout();    SocketFactory socketfactory = getSSLContext().getSocketFactory();    if (timeout == 0) {    return socketfactory.createSocket(host, port, localAddress, localPort);    } else {    Socket socket = socketfactory.createSocket();    SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);    SocketAddress remoteaddr = new InetSocketAddress(host, port);    socket.bind(localaddr);    socket.connect(remoteaddr, timeout);    return socket;    }    }    //自定义私有类    private static class TrustAnyTrustManager implements X509TrustManager {    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {    }    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {    }    public X509Certificate[] getAcceptedIssuers() {    return new X509Certificate[]{};    }    }    }    

转载于:https://my.oschina.net/qiaojj/blog/1926315

java的HttpClient如何去支持无证书访问https相关推荐

  1. 无证书访问https外部接口

    楼主公司需要调用gis服务器,但是服务器提供的https请求,同时公司也没有证书,这样会照成访问后不能直接调到接口,需要手动添加证书.所以用一下方式调用https接口可以避免上述情况. java直接访 ...

  2. Spring Boot RestTemplate 忽略证书访问https

    在Spring Boot中,RestTemplate 一般使用 @Autowired 注解自动装配, 类似: @Autowiredprivate RestTemplate restTemplate; ...

  3. curl+个人证书访问https站点

    目前,大公司的OA管理系统(俗称内网),安全性要求较高,通常采用https的双向 认证模式. 首先,什么是https,简单的说就是在SSL协议之上实现的http协议(get.post等操作) 什么是双 ...

  4. HttpClient 使用证书访问https站点

    使用HttpClient访问https 站点时,如果JRE或者JDK没有导入某个站点的证书,则会报如下错误: javax.net.ssl.SSLHandshakeException: sun.secu ...

  5. httpsclient 自动获取证书 无证书访问 验证过能直接用

    首先实现写一个 实现接口SecureProtocolSocketFactory的类. /***ClassName: bcde*date: 2015年2月26日 下午4:51:01**@author l ...

  6. HttpClient4.x调用指定证书访问https

    代码如下: package com.lala.http;import java.io.FileInputStream; import java.io.InputStream; import java. ...

  7. curl 忽略证书访问 https

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.然而在使用cr ...

  8. CURL使用SSL证书访问HTTPS

    在支付的交互过程中,安全绝对是需要考虑的重要因素之一.体现在对服务器交互数据的签名等环节,但有的时候为了能达到更高的安全级别,还需要用ssl证书,即web服务器有证书,浏览器客户端/请求端也需要安装证 ...

  9. Java 通过证书访问Https服务

    前言 有些HTTP 服务要求客户端在请求的时候使用证书加密/解密/授权 (客户端证书授权).比如说下面的 curl 命令 curl --insecure \--cert cert.crt \ --ke ...

最新文章

  1. 小米MixPath复现之旅
  2. PHP深复制与浅复制
  3. 【我解C语言面试题系列】003 死循环格式问题小结?
  4. http协议报文体_HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE
  5. 把网卡指定给vm虚拟机_为VMWare虚拟网卡指定静态的MAC地址
  6. 远程计算机用户名,远程计算机服务
  7. 通过多组的HSRP实现网络的冗余和负载
  8. GitHub GraphQL API已正式可用
  9. QQ目录下各文件用途不完全揭密
  10. thinkpad 开启虚拟服务器,ThinkPad笔记本怎么开启处理器虚拟化技术
  11. 标准差σ未知_标准差σ的4种计算公式
  12. 旁路电容和去偶电容Bypass and Decouple
  13. html chm 打不开,Win7系统中出现CHM打不开的具体解决方法
  14. 蜂窝物联网与嵌入式SIM(eSIM)
  15. mysql2008连接不上_sql server连接不上怎么办 SQL Server2008R无法登录的解决方案(1814\18456)...
  16. 计算机组成原理——计算机系统概述
  17. android 联机游戏平台,游聚平台/街机平台/主机联网/街机对战平台/网络街机
  18. 微信多媒体文件speex格式转为mp3文件格式
  19. 102条简短深刻的回答,看完人生豁然开朗
  20. Revit内建模型的基础教学分享

热门文章

  1. gin框架长连接_gin框架教程一: go框架gin的基本使用
  2. python连通域标记_图像分析:二值图像连通域标记
  3. php getimagesize图片宽高反了_PHP实现简单验证码识别
  4. 日本搞出奇妙充电屋,坐在任意位置都能隔空充电!研究登上Nature子刊
  5. 不是所有图像都值16x16个词,清华与华为提出动态ViT
  6. 美国疫情加剧:特朗普检测虚惊一场,女儿伊万卡开始“隔离”,马云捐助百万口罩...
  7. 解读2019华为第001号文件:AI时代软件开发的第一要义是可信
  8. 这套1600赞的NLP课程已开放,面向实战,视频代码都有丨资源
  9. 再有人问你Java内存模型是什么,就把这篇文章发给他
  10. 如何使用charles对Android Https进行抓包