zoukankan      html  css  js  c++  java
  • java httpclient 跳过证书验证

    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;

    import javax.net.ssl.SSLContext;
    import javax.net.ssl.TrustManager;

    import org.apache.commons.httpclient.ConnectTimeoutException;
    import org.apache.commons.httpclient.HttpClientError;
    import org.apache.commons.httpclient.params.HttpConnectionParams;
    import org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory;
    import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;

    public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {

    private SSLContext sslContext = null;

    /**
    * Constructor for MySecureProtocolSocketFactory.
    */
    public MySecureProtocolSocketFactory() {
    }

    /**
    * @return
    */
    private static SSLContext createEasySSLContext() {
    try {
    SSLContext context = SSLContext.getInstance("SSL");
    context.init(null, new TrustManager[] {new MyX509TrustManager()}, null);
    return context;
    } catch (Exception e) {
    throw new HttpClientError(e.toString());
    }
    }

    /**
    * @return
    */
    private SSLContext getSSLContext() {
    if (this.sslContext == null) {
    this.sslContext = createEasySSLContext();
    }
    return this.sslContext;
    }

    /*
    * (non-Javadoc)
    * @see
    * org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String,
    * int, java.net.InetAddress, int)
    */
    public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException,
    UnknownHostException {

    return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);
    }

    /*
    * (non-Javadoc)
    * @see
    * org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String,
    * int, java.net.InetAddress, int, org.apache.commons.httpclient.params.HttpConnectionParams)
    */
    public Socket createSocket(final String host, final int port, final InetAddress localAddress, final int localPort,
    final HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException {
    if (params == null) {
    throw new IllegalArgumentException("Parameters may not be null");
    }
    int timeout = params.getConnectionTimeout();
    if (timeout == 0) {
    return createSocket(host, port, localAddress, localPort);
    } else {
    return ControllerThreadSocketFactory.createSocket(this, host, port, localAddress, localPort, timeout);
    }
    }

    /*
    * (non-Javadoc)
    * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int)
    */
    public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
    return getSSLContext().getSocketFactory().createSocket(host, port);
    }

    /*
    * (non-Javadoc)
    * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean)
    */
    public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException,
    UnknownHostException {
    return getSSLContext().getSocketFactory().createSocket(socket, host, port, autoClose);
    }
    }

    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;

    import javax.net.ssl.X509TrustManager;

    public class MyX509TrustManager implements X509TrustManager {

    /*
    * (non-Javadoc)
    * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[],
    * java.lang.String)
    */
    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {

    }

    /*
    * (non-Javadoc)
    * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[],
    * java.lang.String)
    */
    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {

    }

    /*
    * (non-Javadoc)
    * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
    */
    public X509Certificate[] getAcceptedIssuers() {
    return null;
    }

    }

    public static void main(String[] args) {
    try {
    // System.out.println(ToolUtils.encryptBASE64("cb:20160803010100"));
    // System.out.println(ToolUtils.md5("cb201608030101001572874614213670297489123456789"));
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    BidirectionalBean bidbean=new BidirectionalBean();
    bidbean.setCallerNumber("15728746142");
    bidbean.setCalledNumber("13670297489");
    bidbean.setShowCaller("");
    bidbean.setUserData("123456789");
    bidbean.setSig("3bb3b074d67ae8916cda3899bc7cc7e4");
    String responseMsg = "";
    //构造httpclient实例
    ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory();
    Protocol.registerProtocol("https", new Protocol("https", fcty, 443));
    HttpClient http=new HttpClient();
    //参数的转码格式
    http.getParams().setContentCharset("utf-8");
    PostMethod post=new PostMethod("https://192.168.1.58:8443/CtdWebCall/api/extension/call");
    post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());
    post.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 2000);
    post.setRequestHeader("Content-Type", "application/json;charset=utf-8");
    post.setRequestHeader("Accept","application/json");
    post.setRequestHeader("Authorization","Y2I6MjAxNjA4MDMwMTAxMDA=");
    RequestEntity requeste;
    try {
    requeste = new StringRequestEntity(JSON.toJSONString(bidbean), "application/json", "utf-8");
    post.setRequestEntity(requeste);
    http.executeMethod(post);
    if(post.getStatusCode()==HttpStatus.SC_OK){//200http请求返回成功
    //请求返回的参数,第一种方式
    responseMsg=post.getResponseBodyAsString().trim();
    System.out.println(responseMsg);
    }
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (HttpException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    if(post!=null){
    //关闭请求连接
    post.releaseConnection();
    }
    }
    }

  • 相关阅读:
    函数指针和回调函数
    MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合
    MATLAB神经网络(1)之R练习
    R时间序列分析实例
    自动控制理论的MATLAB仿真实例(二)
    自动控制理论的MATLAB仿真实例(一)
    Mathtype快捷键&小技巧
    Latex数学符号对应表
    MATLAB神经网络(1) BP神经网络的数据分类——语音特征信号分类
    R语言实战(三) 图形初阶
  • 原文地址:https://www.cnblogs.com/cbdd/p/5734223.html
Copyright © 2011-2022 走看看