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();}}
阅读全文
0 0
- http与https请求
- http与https请求
- HTTPS请求与HTTP兼容
- HTTP与HTTPS不同请求的区别
- HTTP请求响应过程 与HTTPS区别
- lua中的http与https请求
- HTTP与HTTPS的Post请求
- java 发送http与https请求
- HTTP与HTTPS的区别 HTTPS请求过程
- java代码中http请求与https请求
- https http请求 demo
- C#模拟Http与Https请求框架类实例
- php之curl实现http与https请求的方法
- HTTP请求响应过程以及与HTTPS区别
- PHP之curl实现http与https请求的
- HTTP与HTTPS的区别以及代码实现请求
- php之curl实现http与https请求的方法
- http协议(模拟http请求,http与https的区别)
- linux的socket can学习,指令汇总:
- Android 自定义View 实现方向盘控件的绘制
- LeetCode 378. Kth Smallest Element in a Sorted Matrix
- LeetCode Add to List 617 Merge Two Binary Trees (深度优先搜索)
- node js学习记录
- http与https请求
- 使用git向码云上提交代码
- java跨平台原理
- 音频帧率计算方法(为防止以后忘了)
- C#——面向对象——泛型——泛型接口
- redis哨兵模式
- datetimepicker 配置
- 模拟试——solution
- 如何判断一个list中是否存在重复值