微信企业号请求数据基类封装
来源:互联网 发布:jsp 图片存到数据库 编辑:程序博客网 时间:2024/04/29 13:26
微信企业号请求数据基类封装:
微信开发调用接口操作,需要封装请求操作基类,方便我们完成数据读取操作,因此需要封装常用的方法。
首先封装发起http请求并获取结果的2个类:一个返回JSONObject对象,一个返回byte[]字节数组。
import java.io.BufferedReader;import java.io.ByteArrayOutputStream;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.security.SecureRandom;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import xxx.Enum.EnumMethod;import net.sf.json.JSONObject;public class HttpRequestUtil {/** * 发起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) {System.err.println(requestMethod+"\toutputStr="+outputStr);JSONObject jsonObject = 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.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 = JSONObject.fromObject(buffer.toString());//System.out.println("jsonObject="+jsonObject);} catch (ConnectException ce) {ce.printStackTrace();System.out.println("网络链接失败!");} catch (Exception e) {e.printStackTrace();}return jsonObject;}/** * 发起https请求并获取字节数组结果 * @param requestUrl * @param requestMethod * @param data * @return */public static byte[] httpRequest_byte(String requestUrl, String requestMethod, byte[] data) {ByteArrayOutputStream out = new ByteArrayOutputStream();try {if (requestMethod == EnumMethod.GET.name() && data != null && data.length > 0) {if (requestUrl.indexOf('?') > 0) {requestUrl += '&';} else {requestUrl += '?';}requestUrl += new String(data);}URL url = new URL(requestUrl);HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();if (httpUrlConn instanceof HttpsURLConnection) {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { new MyX509TrustManager() };SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, new SecureRandom());// 从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactory ssf = sslContext.getSocketFactory();((HttpsURLConnection) httpUrlConn).setSSLSocketFactory(ssf);}boolean truePost = requestMethod == EnumMethod.POST.name() && data != null && data.length > 0;httpUrlConn.setDoOutput(truePost);httpUrlConn.setDoInput(true);httpUrlConn.setUseCaches(false);// 设置请求方式(GET/POST)httpUrlConn.setRequestMethod(requestMethod);if (requestMethod == EnumMethod.GET.name()) {httpUrlConn.connect();} else if (truePost) {// 提交数据OutputStream outputStream = httpUrlConn.getOutputStream();outputStream.write(data);outputStream.close();}// 读取返回数据InputStream inputStream = httpUrlConn.getInputStream();byte[] buf = new byte[1024 * 2];int len;while ((len = inputStream.read(buf)) != -1) {out.write(buf, 0, len);}// 释放资源out.close();inputStream.close();inputStream = null;httpUrlConn.disconnect();} catch (ConnectException ce) {} catch (Exception e) {}return out.toByteArray();}}
此处需要一个枚举类:
package xxx.Enum;public enum EnumMethod {GET,POST;}
以上是对httprequest 请求类的封装。
9 1
- 微信企业号请求数据基类封装
- 微信企业号请求数据基类封装:
- 微信公众号开发系列-Http请求封装基类
- 微信企业转账之转账工具类封装
- 微信企业号根据错误码返回错误信息类封装
- 微信企业号
- 微信企业号
- 请求数据的封装类
- 微信企业号,还是企业APP
- 微信企业号/企业微信:获取AccessToken
- 微信企业号源码
- python 微信企业号
- 微信企业号开发
- 微信企业号注册
- 微信按钮创建json数据封装
- 微信支付--返回异步数据封装
- ios 网络请求数据封装类
- iOS 数据请求类AFNetworking 简单封装
- 链表C++实现
- 无法创建堆栈的防护页面 解决方法
- linux中platform_bus_type注册使用到的数据结构和函数
- uva10020
- 从SqlHelper到泛型集合(1)
- 微信企业号请求数据基类封装
- oracle存储过程例子(实战项目)
- 堆排序 hdu 1425 C++实现
- 理解JS中 || 和 &&运算符
- Linux或者Mac系统使用SSH连接树莓派
- android参数含义
- python核心编程笔记(9)- 异常
- 黑马程序员——枚举
- 使用phantomjs对页面进行截图