当前位置:文档之家› HTTPS请求工具类汇总

HTTPS请求工具类汇总

HTTPS请求package com.sunzk.dreamsunlight.weixin.util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import .ConnectException;import .URL;import .ssl.HttpsURLConnection; import .ssl.SSLContext;import .ssl.SSLSocketFactory; import .ssl.TrustManager;import net.sf.json.JSONException;import net.sf.json.JSONObject;import org.apache.log4j.Logger;importcom.sunzk.dreamsunlight.weixin.certificate.MyX509 TrustManager;import com.sunzk.dreamsunlight.weixin.model.Menu; importcom.sunzk.dreamsunlight.weixin.token.AccessToken;/**** @ClassName: WeiXinHttpsUtil*<p>* @Description: TODO(微信HTTPS请求工具类)*<p>* @author sunzk-dreamsunlight-QQ(1131341075)*<p>* @date 2016-11-14 上午10:05:56*<p>*/public class WeiXinHttpsUtil {private static Logger logger =Logger.getLogger(WeiXinHttpsUtil.class);// 获取access_token的接口地址(GET)限200(次/天)public final static String access_token_url = "https:///cgi-bin/token?grant_ty pe=client_credential&appid=APPID&secret=APPSECRET ";/*** 发起https请求并获取结果** @param requestUrl 请求地址* @param requestMethod 请求方式(GET、POST)* @param outputStr 提交的数据* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)*/public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {JSONObject jsonObject = null;StringBuffer buffer = new StringBuffer();try {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { newMyX509TrustManager() };SSLContext sslContext =SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, newjava.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();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;while ((str =bufferedReader.readLine()) != null) {buffer.append(str);}bufferedReader.close();inputStreamReader.close();// 释放资源inputStream.close();inputStream = null;httpUrlConn.disconnect();jsonObject =JSONUtils.toJSONObject(buffer.toString());} catch (ConnectException ce) {("Weixin server connection timed out.");} catch (Exception e) {("https request error:{}", e);}return jsonObject;}/*** 获取access_token** @param appid 凭证* @param appsecret 密钥* @return*/public static AccessToken getAccessToken(String appid, String appsecret) {AccessToken accessToken = null;String requestUrl =access_token_url.replace("APPID",appid).replace("APPSECRET", appsecret);JSONObject jsonObject =httpRequest(requestUrl, "GET", null);// 如果请求成功if (null != jsonObject) {try {accessToken = new AccessToken();accessToken.setAccess_token(jsonObject.getString( "access_token"));accessToken.setExpires_in(jsonObject.getInt("expi res_in"));} catch (JSONException e) {("获取token失败 errcode:{} errmsg:{}"+jsonObject.getInt("errcode")+jsonObjec t.getString("errmsg"));accessToken = null;// 获取token失败 }}return accessToken;}public static void main(String[] args){String url ="https:///cgi-bin/material/batch get_material?access_token=vtKMZ09f7uuoB0s9Otn2g8Q IbCksRYRPJbKwBUB37wM0vhTQchYBC8gXV2OQjYmu8GcYhF1s dkpSzbu0dge6K_2qh5N6po3RMNpEA-A0WwgCQXgADAKYF"; String requestMethod = "GET";JSONObject obj =httpRequest(url,requestMethod,null);String info = JSONUtils.toJSONString(obj); System.out.println("<------返回信息------>"+info);}}HTTP请求package com.sunzk.dreamsunlight.weixin.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .URL;import .URLConnection;import .URLEncoder;import java.util.Map;/**** @ClassName: HttpUtil*<p>* @Description: TODO(HttpRequest请求工具类) *<p>* @author sunzk-dreamsunlight-QQ(1131341075) *<p>* @date 2016-11-11 上午10:44:44*<p>*/public class HttpUtil {/*** 使用Get方式获取数据** @param url* URL包括参数,http://HOST/XX?XX=XX&XXX=XXX* @param charset* @return*/public static String sendGet(String url, String charset) {String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection","Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream(), charset));String line;while ((line = in.readLine()) != null) { result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** POST请求,字符串形式数据* @param url 请求地址* @param param 请求数据* @param charset 编码方式*/public static String sendPostUrl(String url, String param, String charset) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept","*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** POST请求,Map形式数据* @param url 请求地址* @param param 请求数据* @param charset 编码方式*/public static String sendPost(String url, Map<String, String> param,String charset) {StringBuffer buffer = new StringBuffer(); if (param != null && !param.isEmpty()) { for (Map.Entry<String, String> entry : param.entrySet()) {buffer.append(entry.getKey()).append("=").append(URLEncoder.encode(e ntry.getValue())).append("&");}}buffer.deleteCharAt(buffer.length() - 1);PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept","*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(buffer);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}public static void main(String[] args) {String url = "/";String encode = "GB2312";String content = sendGet(url,encode);System.out.println("<-------------HttpRquest 请求结果-------------->"+content);}}。

相关主题