java公众平台通用接口工具类HttpConnectUtil实例代码

网友投稿 249 2023-03-01


java公众平台通用接口工具类HttpConnectUtil实例代码

实例如下:

package com.common.util;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.ConnectException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.Date;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSocketFactory;

import javax.net.ssl.TrustManager;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.common.weixin.access.util.MyX509TrustManager;

/**

* 公众平台通用接口工具类

*

* @author

* @date 2013-08-09

*/

public class HttpConnectUtil {

private static Logger log = LoggerFactory.getLogger(HttpConnectUtil.class);

/**

* 发起https请求并获取结果

*

* @param requestUrl 请求地址

* @param requestMethod 请求方式(GET、POST)

* @param outputStr 提交的数据

* @return jsONObject(通过JSONObject.get(key)的方式获取json对象的属性值)

*/

public static String httpRequest(String requestUrl, String requestMethod, String outputStr) {

String result = null;

StringBuffer buffer = new StringBuffer();

try {

URL url = new URL(requestUrl);

HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

// 设置通用的请求属性

httpUrlConn.setRequestProperty("accept", "*/*");

httpUrlConn.setRequestProperty("connection", "Keep-Alive");

httpUrlConn.setRequestProperty("Charset", "utf-8");

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();

result = buffer.toString();

//jsonObject = JSONObject.fromObject(buffer.toString());

} catch (ConnectException ce) {

log.error("Weixin server connection timed out.");

} catch (Exception e) {

log.error("https request error:{}", e);

}

return result;

}

/**

* 发起https请求并获取结果

*

* @param requestUrl 请求地址

* @param requestMethod 请求方式(GET、POST)

* @param outputStr 提交的数据

* @return 结果字符串

*/

public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) throws Exception{

String result = null;

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对象

SSLSockehttp://tFactory ssf = sslContext.getSocketFactory();

URL url = new URL(requestUrl);

HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();

httpUrlConn.setSSLSocketFactory(ssf);

// 设置通用的请求属性

httpUrlConn.setRequestProperty("accept", "*/*");

httpUrlConn.setRequestProperty("connection", "Keep-Alive");

httpUrlConn.setRequestProperty("Charset", "utf-8");

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();

result = buffer.toString();

//jsonObject = JSONObject.fromObject(buffer.toString());

} catch (ConnectException ce) {

log.error(requestUrl + " server connection timed out.");

throw new Exception("连接服务器超时");

} catch (Exception e) {

log.error(requestUrl +" https request error:{}", e);

throw new Exception("HTTPS请求错误");

}

return result;

}

public static String getIpAddr(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for");

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

}

return ip;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Properties的使用和配置方法
下一篇:微信跳一跳辅助Java代码实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~