http与https请求

来源:互联网 发布:淘宝企业店铺开通流程 编辑:程序博客网 时间:2024/05/30 04:30
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.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.ProtocolSocketFactory;/** * httpclient 无信任证书使用https * @author qtt * */public class MySSLProtocolSocketFactory implements ProtocolSocketFactory {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 X509Certificate[] getAcceptedIssuers() {             return new X509Certificate[]{};         }@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)throws java.security.cert.CertificateException {}@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)throws java.security.cert.CertificateException {}     }         }  import java.text.SimpleDateFormat;import java.util.Date;import java.util.UUID;import org.apache.commons.httpclient.Header;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.RequestEntity;import org.apache.commons.httpclient.protocol.Protocol;import org.apache.commons.lang.StringUtils;import app.cn.qtt.cmbase.util.Base64;import app.cn.qtt.cmbase.util.MySSLProtocolSocketFactory;import app.cn.qtt.hangup.common.CacheConstants;public class HttpDoPost {public static String doPost(String url, RequestEntity entity, Header[] headers) throws Exception {HttpClient httpClient = new HttpClient();PostMethod post = new PostMethod(url);post.setRequestEntity(entity);for (Header header : headers) {post.setRequestHeader(header);}int status = httpClient.executeMethod(post);Header[] hs = post.getResponseHeaders();for (Header header : hs) {System.out.println(header.getName()+":"+header.getValue());}if (status != HttpStatus.SC_OK) {return post.getResponseBodyAsString();}return post.getResponseBodyAsString();}public static String doPostSSL(String url, RequestEntity entity, Header[] headers) throws Exception {HttpClient httpClient = new HttpClient();Protocol myhttps = new Protocol("https", new MySSLProtocolSocketFactory(), 443);   Protocol.registerProtocol("https", myhttps);  PostMethod post = new PostMethod(url);post.setRequestEntity(entity);for (Header header : headers) {post.setRequestHeader(header);}int status = httpClient.executeMethod(post);Header[] hs = post.getResponseHeaders();for (Header header : hs) {System.out.println(header.getName()+":"+header.getValue());}if (status != HttpStatus.SC_OK) {return post.getResponseBodyAsString();}return post.getResponseBodyAsString();}}


 
原创粉丝点击