java https访问
来源:互联网 发布:ubuntu 分区 编辑:程序博客网 时间:2024/05/27 10:43
package com.mobao.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.StringWriter;import java.net.URL;import java.security.SecureRandom;import java.security.cert.CertificateException;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.KeyManager;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.apache.commons.lang.StringUtils;import sun.net.www.protocol.https.Handler;/** * @author Administrator * */public class HttpsUtils {private static final String METHOD_GET = "GET";private static final String METHOD_POST = "POST";private static final String DEFAULT_CHARSET = "utf-8";public static String doPost(String url, String params, String charset, int connectTimeout, int readTimeout,boolean getLocation) throws Exception {String ctype = "text/html;charset=" + charset;byte[] content = {};if(params != null){content = params.getBytes(charset);}return doPost(url, ctype, content, connectTimeout, readTimeout,getLocation);}public static String doPost(String url, String ctype, byte[] content,int connectTimeout,int readTimeout,boolean getLocation) throws Exception {HttpsURLConnection conn = null;OutputStream out = null;String rsp = null;try {try{SSLContext ctx = SSLContext.getInstance("SSL"); ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom()); SSLContext.setDefault(ctx);conn = getConnection(new URL(null,url,new Handler()), METHOD_POST, ctype);conn.setRequestMethod("POST");conn.setHostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return true;}});conn.setConnectTimeout(connectTimeout);conn.setReadTimeout(readTimeout);}catch(Exception e){throw e;}try{out = conn.getOutputStream();out.write(content);rsp = getResponseAsString(conn);if (rsp!=null) {if (getLocation) {String location = conn.getHeaderField("Location");if (location!=null) {return location.substring(location.lastIndexOf("/")+1, location.length());}}}}catch(IOException e){throw e;}}finally {if (out != null) {out.close();}if (conn != null) {conn.disconnect();}}return rsp;}public static String doGet(String url, String ctype, int connectTimeout,int readTimeout) throws Exception {HttpsURLConnection conn = null;String rsp = null;try {try{SSLContext ctx = SSLContext.getInstance("SSL"); ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom()); SSLContext.setDefault(ctx);conn = getConnection(new URL(null,url,new Handler()), METHOD_GET, ctype);conn.setHostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return true;}});conn.setConnectTimeout(connectTimeout);conn.setReadTimeout(readTimeout);}catch(Exception e){throw e;}try{rsp = getResponseAsString(conn);}catch(IOException e){throw e;}}finally {if (conn != null) {conn.disconnect();}}return rsp;} private static class DefaultTrustManager implements X509TrustManager {/* (non-Javadoc) * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String) */@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1)throws CertificateException {// TODO Auto-generated method stub}/* (non-Javadoc) * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String) */@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1)throws CertificateException {// TODO Auto-generated method stub}/* (non-Javadoc) * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers() */@Overridepublic java.security.cert.X509Certificate[] getAcceptedIssuers() {// TODO Auto-generated method stubreturn null;} }private static javax.net.ssl.HttpsURLConnection getConnection(java.net.URL JNurl, String method, String ctype)throws IOException {javax.net.ssl.HttpsURLConnection conn = (javax.net.ssl.HttpsURLConnection) JNurl.openConnection();conn.setRequestMethod(method);conn.setDoInput(true);conn.setDoOutput(true);//conn.setRequestProperty("Accept", "text/plain");//conn.setRequestProperty("User-Agent", "stargate");//conn.setRequestProperty("Content-Type", ctype);return conn;}protected static String getResponseAsString(HttpsURLConnection conn) throws IOException {String charset = getResponseCharset(conn.getContentType());InputStream es = conn.getErrorStream();if (es == null) {return getStreamAsString(conn.getInputStream(), charset);} else {String msg = getStreamAsString(es, charset);if (StringUtils.isEmpty(msg)) {throw new IOException(conn.getResponseCode() + ":" + conn.getResponseMessage());} else {throw new IOException(msg);}}}private static String getStreamAsString(InputStream stream, String charset) throws IOException {try {BufferedReader reader = new BufferedReader(new InputStreamReader(stream, charset));StringWriter writer = new StringWriter();char[] chars = new char[256];int count = 0;while ((count = reader.read(chars)) > 0) {writer.write(chars, 0, count);}return writer.toString();} finally {if (stream != null) {stream.close();}}}private static String getResponseCharset(String ctype) {String charset = DEFAULT_CHARSET;if (!StringUtils.isEmpty(ctype)) {String[] params = ctype.split(";");for (String param : params) {param = param.trim();if (param.startsWith("charset")) {String[] pair = param.split("=", 2);if (pair.length == 2) {if (!StringUtils.isEmpty(pair[1])) {charset = pair[1].trim();}}break;}}}return charset;}}
0 0
- Tomcat创建HTTPS访问,java访问https
- java 访问https站点
- JAVA访问Https
- java访问https请求
- java https访问
- java 后台访问https
- java https访问
- Java实现https访问
- java访问https请求
- Java https访问
- Java访问https接口实现
- Java访问https接口实现
- Java访问https接口实现
- java 访问https忽略证书
- Java访问https接口实现
- 【JAVA/HTTPS】JAVA生成ks,证书,tomcat配置HTTPS访问
- java通过代理访问外网https
- JAVA访问HTTPS协议的Web Service
- java 进行aes加密
- 最长01串 SDUT 3308
- Device Low-Power States
- BSS段为什么需要初始化
- dubbo初识(1)
- java https访问
- Uncaught TypeError: ((n.event.special[g.origType] || (intermediate value)).handle || g.handler).appl
- 接触角测量
- java本地文件下载
- Dynamics CRM 2015/2016 Web API:重客户端的CRUD操作
- Android Fragment 生命周期分析
- Oracle定时任务处理
- 防止sql注入的五种方法
- maven如何合并两个war到一个war项目中