微信公众号开发 公众号接口开发 封装统一的GET/POST请求接口
10万+IT人都在关注,史上最全面的微信开发实战教程:包含公众号,小程序,微信支付等开发案例
欢迎关注笔者个人博客:http://blogs.chenyunkeji.com/
在微信公众号/小程序开发过程中,后端服务要用到微信公众平台提供的各种接口,比如创建个性化菜单的接口,网页授权接口,消息事件接口等,事件推送接口等,几乎大多数的微信接口都要用到GET/POST方式的http请求,那么就需要封装一款通用的高效的统一请求接口,笔者把封装好的代码分享出来,这里涉及到2个工具类和1个依赖jar,工具类分别是1个是信任证书管理器工具类,1个是具体的请求接口工具类,依赖的jar见下面的maven依赖,本案例使用Java语言,笔者相关博客中都会用到这2个工具类,需要的开发者朋友直接粘贴拿走就可用,下面直接看具体代码:
一、引入maven依赖jar
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId>
</dependency>
二、信任证书管理器工具类
/*** 创建时间:2019年3月19日 下午3:47:54* 类说明:这个证书管理器的作用就是让它信任我们指定的证书,下面的代码意味着信任所有证书,不管是否权威机构颁发* @author guobinhui* @since JDK 1.8.0_51*/public class MyX509TrustManager implements X509TrustManager{@Overridepublic void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// TODO Auto-generated method stub}@Overridepublic void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// TODO Auto-generated method stub}@Overridepublic X509Certificate[] getAcceptedIssuers() {// TODO Auto-generated method stubreturn null;}
}
三、统一请求封装
/*** 创建时间:2019年3月19日 下午3:47:54* 类说明:封装统一的GET/POST请求接口* @author guobinhui* @since JDK 1.8.0_51*/
public class WeiXinUtil {private final static Logger logger= LoggerFactory.getLogger(WeiXinUtil.class);public static JSONObject HttpGet(String URL) {String result = null;JSONObject jsonObj = null;CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;try {// 创建httpGet.HttpGet httpGet = new HttpGet(URL);// 通过请求对象获取响应对象response = httpclient.execute(httpGet);// 判断网络连接状态码是否正常(0--200都数正常)if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {HttpEntity entity = response.getEntity();//从HttpResponse中获取结果if(!StringUtils.isEmpty(entity)){result = EntityUtils.toString(entity,"utf-8");logger.info("请求的数据结果为{}",result);jsonObj = JSONObject.parseObject(result);//字符串类型转换为JSON对象}}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return jsonObj;}public static JSONObject httpPost(String requestUrl, String requestMethod, String 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 (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 = JSON.parseObject(buffer.toString());} catch (ConnectException ce) {logger.info("Weixin server connection timed out...");} catch (Exception e) {logger.info("https request error:{}.");}return jsonObject;}
}
更多JavaEE资料请关注下面公众号,欢迎广大开发者朋友一起交流。更多微信公众号功能演示请扫码体验,笔者电话(微信):18629374628
微信公众号开发 公众号接口开发 封装统一的GET/POST请求接口相关推荐
- vue 接口节流_vue输入节流,避免实时请求接口的实例代码
在做搜索的时候,当搜索页面只有一个输入框.没有确定按钮的时候,只能在用户输入时请求服务端,查询数据.这样会导致频繁的发送请求,造成服务端压力. 解决这个问题,可以使用vue做输入节流. 1.创建一个工 ...
- 调用金蝶EAS系统标准凭证接口,封装凭证对象,调用业务接口前需先登录
第三方系统与金蝶EAS系统凭证集成时,调用金蝶EAS系统标准凭证接口WSGLWebServiceFacade,下载对应的wsdl文件,生成客户端代码之后,可参考以下接口调用方式. 与EAS系统进行凭证 ...
- python接口自动化(六)--发送get请求接口(详解)
简介 如果想用python做接口测试,我们首先有不得不了解和学习的模块.它就是第三方模块:Requests. 虽然Python内置的urllib模块,用于访问网络资源.但是,它用起来比较麻烦,而且,缺 ...
- 黑马java学成在线项目 第1天 讲义-项目概述 CMS接口开发 三
4 CMS服务端工程搭建 4.1 开发工具配置 服务端工程使用IntellijIDEA开发. 1.创建工程代码目录 XcEduCode(本教程创建XcEduCode01目录),并且IDEA打开. 2. ...
- Java模拟HTTP/POST方式请求接口
Java模拟HTTP/POST方式请求接口: java模拟http/post方式请求接口方法主体: public String sendPost(JSONObject json, String url ...
- 公众号 接收规则 消息_微信公众平台 发送模板消息(Java接口开发)
前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...
- 微信公众号api关注接口php,微信公众平台接口开发入门示例
本文实例讲述了微信公众平台接口开发入门示例.分享给大家供大家参考.具体如下: 微信公众平台的接口开发是一个现在比较常用的功能了,很多的人都会去了解一下微信公众平台一些简单开发应用,这里就来给大家介绍一 ...
- 微信公众号开发 - 配置表设计以及接入公众号接口开发
微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...
- 微信公众号平台接口开发:发送客服消息
官方接口介绍 发送文本信息 参数有4个, access_token这个就不用介绍了,就是之前得到的那个AccessToken,就是在这个接口里边当中参数用的 touser是关注了公众号的微信用户的op ...
最新文章
- 这样的“牛”人,绝佳客户最好能多碰上上几个是我们当程序员的好运
- PL/SQL保存用户名密码 自定义界面
- ibatis.net:第五天,QueryForObject
- sql2012包含数据库,快速生成用户tsql脚本
- 三层架构-----实践篇-登录小实例
- 网络编程知识预备(4) ——了解应用层的HTTP协议与HTTPS协议
- 字节跳动新加坡职位 Algorithm Engineer (Platform Governance)
- C# ListView用法详解
- atitit.js 与c# java交互html5化的原理与总结.doc
- pycharm 的live_template的使用
- 使开发更便捷——Visual Studio 使用技巧——快捷键
- 各种排序的时间复杂度比较
- java坦克大战 素材_坦克大战 游戏源码+ 素材+文档(了解面向对象的具体编程)
- 【Word】如何实现特殊数字 带圈数字
- Andorid连接USB打印机
- Science | 郑文山等发布微生物组单细胞测序新技术Microbe-seq(王军/戴磊/晁彦杰点评)...
- 为什么我们要学习Microsoft Graph
- 专科毕业五年,曲线救国进腾讯
- iOS 的 (签名验签)Code Signing 体系
- excel拆分单元格,然后每个拆分出的单元格沿用原未拆分单元格内容