HttpURLConnection基本使用【L】

来源:互联网 发布:米思米3d数据库 编辑:程序博客网 时间:2024/06/08 13:22

HttpURLConnection可以直接使用,不用下载jar包


代码如下:


package com.lxl.http;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ConnectException;import java.net.HttpURLConnection;import java.net.URL;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;public class HttpURLTest {/** * 发起https请求并获取结果 *  * @param requestUrl *            请求地址 * @param requestMethod *            请求方式(GET、POST) * @param outputStr *            提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */public static byte[] httpsRequest(String requestUrl, String requestMethod,String outputStr) {StringBuffer buffer = new StringBuffer();try {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { new MyX509TrustManager() };SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, new java.security.SecureRandom());// 从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactory ssf = sslContext.getSocketFactory();URL url = new URL(requestUrl);HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();httpUrlConn.setSSLSocketFactory(ssf);httpUrlConn.setDoOutput(true);httpUrlConn.setDoInput(true);httpUrlConn.setUseCaches(false);// 设置请求方式(GET/POST)httpUrlConn.setRequestMethod(requestMethod);// if ("GET".equalsIgnoreCase(requestMethod))httpUrlConn.connect();// 当有数据需要提交时if (null != outputStr) {OutputStream outputStream = httpUrlConn.getOutputStream();// 注意编码格式,防止中文乱码outputStream.write(outputStr.getBytes("UTF-8"));outputStream.close();}// 将返回的输入流转换成字符串InputStream inputStream = httpUrlConn.getInputStream();return changeInputStream(inputStream);} catch (ConnectException ce) {ce.printStackTrace();} catch (Exception e) {e.printStackTrace();}return null;}public static byte[] requestByPost(String uri, String param) {URL url = null;try {url = new URL(uri);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("POST");// 提交模式httpURLConnection.setRequestProperty("Content-Type","application/json;charset=utf-8");httpURLConnection.setConnectTimeout(10000);// 连接超时 单位毫秒httpURLConnection.setReadTimeout(2000);// 读取超时 单位毫秒// 发送POST请求必须设置如下两行httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);// 设置cookiehttpURLConnection.addRequestProperty("Cookie", "myCookies=123");// 获取URLConnection对象对应的输出流PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());// 发送请求参数printWriter.write(param);// post的参数 xx=xx&yy=yy// flush输出流的缓冲printWriter.flush();// 获得cookieString cookie = httpURLConnection.getHeaderField("set-cookie");System.out.println("cookie:::::::::::::" + cookie);int repCode = httpURLConnection.getResponseCode();System.out.println(repCode);// 开始获取数据return changeInputStream(httpURLConnection.getInputStream());} catch (Exception e) {e.printStackTrace();}return null;}public static byte[] requestByGetSync(String uri) {URL url = null;try {url = new URL(uri);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("GET");// 提交模式httpURLConnection.setConnectTimeout(10000);// 连接超时 单位毫秒httpURLConnection.setReadTimeout(2000);// 读取超时 单位毫秒httpURLConnection.connect();int repCode = httpURLConnection.getResponseCode();System.out.println(repCode);// 开始获取数据return changeInputStream(httpURLConnection.getInputStream());} catch (Exception e) {e.printStackTrace();}return null;}public static byte[] changeInputStream(InputStream inputStream) {// TODO Auto-generated method stubByteArrayOutputStream outputStream = new ByteArrayOutputStream();int len = 0;byte[] date = new byte[1024];try {while ((len = inputStream.read(date)) != -1) {outputStream.write(date, 0, len);}return outputStream.toByteArray();// result = new String(outputStream.toByteArray(), encode);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {outputStream.close();inputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return null;}public static void main(String[] args) throws Exception {String UUID = "";String uri = "https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb"+ "&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&"+ "lang=zh_CN&_=" + System.currentTimeMillis();// 防止报如下错// javax.net.ssl.SSLProtocolException: handshake alert:// unrecognized_nameSystem.setProperty("jsse.enableSNIExtension", "false");// String returnStr = new String(requestByGetSync(uri), "UTF-8");String returnStr = new String(httpsRequest(uri, "GET", null), "UTF-8");if (null != returnStr && !"".equals(returnStr)) {System.out.println(returnStr);if (returnStr.indexOf("200") != -1) {UUID = returnStr.substring(returnStr.length() - 14,returnStr.length() - 2);}}System.out.println(UUID);}}


原创粉丝点击