当前位置: 首页 > 编程笔记 >

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

和斌
2023-03-14
本文向大家介绍java公众平台通用接口工具类HttpConnectUtil实例代码,包括了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对象 
   SSLSocketFactory 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;
} 
}

以上这篇java公众平台通用接口工具类HttpConnectUtil实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java微信公众平台开发(1) 接入微信公众平台,包括了Java微信公众平台开发(1) 接入微信公众平台的使用技巧和注意事项,需要的朋友参考一下 前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接! (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当

  • 本文向大家介绍php微信公众平台开发类实例,包括了php微信公众平台开发类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php微信公众平台开发类。分享给大家供大家参考。具体分析如下: ThinkWechat.php类文件如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍微信公众平台(测试接口)准备工作,包括了微信公众平台(测试接口)准备工作的使用技巧和注意事项,需要的朋友参考一下 1.申请微信公众号 我们要进行微信公众平台的开发,第一步当然是要有公众号了。什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵。通俗的说,我们微信平台就好像是一个大社会,里面有个体人,也有各种组织机构。你自己使用的普通微信号就是个体人,而公众号就是那些组织,这些组

  • 本文向大家介绍微信公众平台消息接口校验与消息接口响应实例,包括了微信公众平台消息接口校验与消息接口响应实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了微信公众平台消息接口校验与消息接口响应的方法。分享给大家供大家参考。具体分析如下: 开发微信公众平台消息接口过程中,我们首先需要验证消息接口的有效性,验证通过后,才可以进行其他开发,首先我们来看一下微信公众平台给我的 PHP SDK. 1

  • 本文向大家介绍Java微信公众平台之群发接口(高级群发),包括了Java微信公众平台之群发接口(高级群发)的使用技巧和注意事项,需要的朋友参考一下 再次吐槽下,微信素材管理和群发这块文档对Java很不友好,此文需要结合我前文和官方文档。 测试号调试群发只需看是否群发消息是否能组装成功,不需要看结果如何(反正不会发送成功的),因为微信还没开放这个功能(估计也不会开放的)。 一、群发说明 在公众平台网

  • 本文向大家介绍php微信公众平台交互与接口详解,包括了php微信公众平台交互与接口详解的使用技巧和注意事项,需要的朋友参考一下 本文分为三大部分为大家进行介绍,具体内容如下 1、微信用户、微信服务器和后台服务器的交互 例:微信用户向公众号发送一条文本消息,这条消息会首先传给微信服务器,微信服务器处理这条信息并将其以xml数据格式传递给后台服务器,后台服务器接受到数据后会对数据进行处理,再响应数据以