为了账号安全,请及时绑定邮箱和手机立即绑定

HttpsUtils

标签:
Html/CSS

         

package io.renren.modules.jqr.util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.Map;import java.util.Map.Entry;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.springframework.util.StringUtils;/** * http、https 请求工具类 *  * @author jiaxiaoxian *  */public class HttpUtils {	private static final String DEFAULT_CHARSET = "UTF-8";	private static final String _GET = "GET"; // GET	private static final String _POST = "POST";// POST	public static final int DEF_CONN_TIMEOUT = 30000;	public static final int DEF_READ_TIMEOUT = 30000;	/**	 * 初始化http请求参数	 * 	 * @param url	 * @param method	 * @param headers	 * @return	 * @throws Exception	 */	private static HttpURLConnection initHttp(String url, String method,			Map<String, String> headers) throws Exception {		URL _url = new URL(url);		HttpURLConnection http = (HttpURLConnection) _url.openConnection();		// 连接超时		http.setConnectTimeout(DEF_CONN_TIMEOUT);		// 读取超时 --服务器响应比较慢,增大时间		http.setReadTimeout(DEF_READ_TIMEOUT);		http.setUseCaches(false);		http.setRequestMethod(method);		http.setRequestProperty("Content-Type",				"application/x-www-form-urlencoded");		http.setRequestProperty(				"User-Agent",				"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");		if (null != headers && !headers.isEmpty()) {			for (Entry<String, String> entry : headers.entrySet()) {				http.setRequestProperty(entry.getKey(), entry.getValue());			}		}		http.setDoOutput(true);		http.setDoInput(true);		http.connect();		return http;	}	/**	 * 初始化http请求参数	 * 	 * @param url	 * @param method	 * @return	 * @throws Exception	 */	private static HttpsURLConnection initHttps(String url, String method,			Map<String, String> headers) throws Exception {		TrustManager[] tm = { new MyX509TrustManager() };		System.setProperty("https.protocols", "TLSv1");		SSLContext sslContext = SSLContext.getInstance("TLS");		sslContext.init(null, tm, new java.security.SecureRandom());		// 从上述SSLContext对象中得到SSLSocketFactory对象		SSLSocketFactory ssf = sslContext.getSocketFactory();		URL _url = new URL(url);		HttpsURLConnection http = (HttpsURLConnection) _url.openConnection();		// 设置域名校验		http.setHostnameVerifier(new HttpUtils().new TrustAnyHostnameVerifier());		// 连接超时		http.setConnectTimeout(DEF_CONN_TIMEOUT);		// 读取超时 --服务器响应比较慢,增大时间		http.setReadTimeout(DEF_READ_TIMEOUT);		http.setUseCaches(false);		http.setRequestMethod(method);		http.setRequestProperty("Content-Type",				"application/x-www-form-urlencoded");		http.setRequestProperty(				"User-Agent",				"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");		if (null != headers && !headers.isEmpty()) {			for (Entry<String, String> entry : headers.entrySet()) {				http.setRequestProperty(entry.getKey(), entry.getValue());			}		}		http.setSSLSocketFactory(ssf);		http.setDoOutput(true);		http.setDoInput(true);		http.connect();		return http;	}	/**	 * 	 * @description 功能描述: get 请求	 * @return 返回类型:	 * @throws Exception	 */	public static String get(String url, Map<String, String> params,			Map<String, String> headers) throws Exception {		HttpURLConnection http = null;		if (isHttps(url)) {			http = initHttps(initParams(url, params), _GET, headers);		} else {			http = initHttp(initParams(url, params), _GET, headers);		}		InputStream in = http.getInputStream();		BufferedReader read = new BufferedReader(new InputStreamReader(in,				DEFAULT_CHARSET));		String valueString = null;		StringBuffer bufferRes = new StringBuffer();		// 优化,不能光使用!=null做判断。有为""的情况,防止多次空循环		while (!StringUtils.isEmpty(valueString = read.readLine())) {			bufferRes.append(valueString);		}		in.close();		if (http != null) {			http.disconnect();// 关闭连接		}		return bufferRes.toString();	}	public static String get(String url) throws Exception {		return get(url, null);	}	public static String get(String url, Map<String, String> params)			throws Exception {		return get(url, params, null);	}	public static String post(String url, String params) throws Exception {		HttpURLConnection http = null;		if (isHttps(url)) {			http = initHttps(url, _POST, null);		} else {			http = initHttp(url, _POST, null);		}		OutputStream out = http.getOutputStream();		out.write(params.getBytes(DEFAULT_CHARSET));		out.flush();		out.close();		InputStream in = http.getInputStream();		BufferedReader read = new BufferedReader(new InputStreamReader(in,				DEFAULT_CHARSET));		String valueString = null;		StringBuffer bufferRes = new StringBuffer();		while ((valueString = read.readLine()) != null) {			bufferRes.append(valueString);		}		in.close();		if (http != null) {			http.disconnect();// 关闭连接		}		return bufferRes.toString();	}		public static String post(String url, String params,Map<String, String> headers) throws Exception {		HttpURLConnection http = null;		if (isHttps(url)) {			http = initHttps(url, _POST, headers);		} else {			http = initHttp(url, _POST, headers);		}		OutputStream out = http.getOutputStream();		out.write(params.getBytes(DEFAULT_CHARSET));		out.flush();		out.close();		InputStream in = http.getInputStream();		BufferedReader read = new BufferedReader(new InputStreamReader(in,				DEFAULT_CHARSET));		String valueString = null;		StringBuffer bufferRes = new StringBuffer();		while ((valueString = read.readLine()) != null) {			bufferRes.append(valueString);		}		in.close();		if (http != null) {			http.disconnect();// 关闭连接		}		return bufferRes.toString();	}	/**	 * 功能描述: 构造请求参数	 * 	 * @return 返回类型:	 * @throws Exception	 */	public static String initParams(String url, Map<String, String> params)			throws Exception {		if (null == params || params.isEmpty()) {			return url;		}		StringBuilder sb = new StringBuilder(url);		if (url.indexOf("?") == -1) {			sb.append("?");		}		sb.append(map2Url(params));		return sb.toString();	}	/**	 * map构造url	 * 	 * @return 返回类型:	 * @throws Exception	 */	public static String map2Url(Map<String, String> paramToMap)			throws Exception {		if (null == paramToMap || paramToMap.isEmpty()) {			return null;		}		StringBuffer url = new StringBuffer();		boolean isfist = true;		for (Entry<String, String> entry : paramToMap.entrySet()) {			if (isfist) {				isfist = false;			} else {				url.append("&");			}			url.append(entry.getKey()).append("=");			String value = entry.getValue();			if (!StringUtils.isEmpty(value)) {				url.append(URLEncoder.encode(value, DEFAULT_CHARSET));			}		}		return url.toString();	}	/**	 * 检测是否https	 * 	 * @param url	 */	private static boolean isHttps(String url) {		return url.startsWith("https");	}	/**	 * https 域名校验	 * 	 * @param url	 * @param params	 * @return	 */	public class TrustAnyHostnameVerifier implements HostnameVerifier {		public boolean verify(String hostname, SSLSession session) {			return true;// 直接返回true		}	}	private static class MyX509TrustManager implements X509TrustManager {		public X509Certificate[] getAcceptedIssuers() {			return null;		}		public void checkServerTrusted(X509Certificate[] chain, String authType)				throws CertificateException {		}		public void checkClientTrusted(X509Certificate[] chain, String authType)				throws CertificateException {		}	};	public static void main(String[] args) {		String str = "";		try {			str = get("https://www.baidu.com");		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		System.out.println(str);	}}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消