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请求接口相关推荐

  1. vue 接口节流_vue输入节流,避免实时请求接口的实例代码

    在做搜索的时候,当搜索页面只有一个输入框.没有确定按钮的时候,只能在用户输入时请求服务端,查询数据.这样会导致频繁的发送请求,造成服务端压力. 解决这个问题,可以使用vue做输入节流. 1.创建一个工 ...

  2. 调用金蝶EAS系统标准凭证接口,封装凭证对象,调用业务接口前需先登录

    第三方系统与金蝶EAS系统凭证集成时,调用金蝶EAS系统标准凭证接口WSGLWebServiceFacade,下载对应的wsdl文件,生成客户端代码之后,可参考以下接口调用方式. 与EAS系统进行凭证 ...

  3. python接口自动化(六)--发送get请求接口(详解)

    简介 如果想用python做接口测试,我们首先有不得不了解和学习的模块.它就是第三方模块:Requests. 虽然Python内置的urllib模块,用于访问网络资源.但是,它用起来比较麻烦,而且,缺 ...

  4. 黑马java学成在线项目 第1天 讲义-项目概述 CMS接口开发 三

    4 CMS服务端工程搭建 4.1 开发工具配置 服务端工程使用IntellijIDEA开发. 1.创建工程代码目录 XcEduCode(本教程创建XcEduCode01目录),并且IDEA打开. 2. ...

  5. Java模拟HTTP/POST方式请求接口

    Java模拟HTTP/POST方式请求接口: java模拟http/post方式请求接口方法主体: public String sendPost(JSONObject json, String url ...

  6. 公众号 接收规则 消息_微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...

  7. 微信公众号api关注接口php,微信公众平台接口开发入门示例

    本文实例讲述了微信公众平台接口开发入门示例.分享给大家供大家参考.具体如下: 微信公众平台的接口开发是一个现在比较常用的功能了,很多的人都会去了解一下微信公众平台一些简单开发应用,这里就来给大家介绍一 ...

  8. 微信公众号开发 - 配置表设计以及接入公众号接口开发

    微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...

  9. 微信公众号平台接口开发:发送客服消息

    官方接口介绍 发送文本信息 参数有4个, access_token这个就不用介绍了,就是之前得到的那个AccessToken,就是在这个接口里边当中参数用的 touser是关注了公众号的微信用户的op ...

最新文章

  1. 这样的“牛”人,绝佳客户最好能多碰上上几个是我们当程序员的好运
  2. PL/SQL保存用户名密码 自定义界面
  3. ibatis.net:第五天,QueryForObject
  4. sql2012包含数据库,快速生成用户tsql脚本
  5. 三层架构-----实践篇-登录小实例
  6. 网络编程知识预备(4) ——了解应用层的HTTP协议与HTTPS协议
  7. 字节跳动新加坡职位 Algorithm Engineer (Platform Governance)
  8. C# ListView用法详解
  9. atitit.js 与c# java交互html5化的原理与总结.doc
  10. pycharm 的live_template的使用
  11. 使开发更便捷——Visual Studio 使用技巧——快捷键
  12. 各种排序的时间复杂度比较
  13. java坦克大战 素材_坦克大战 游戏源码+ 素材+文档(了解面向对象的具体编程)
  14. 【Word】如何实现特殊数字 带圈数字
  15. Andorid连接USB打印机
  16. Science | 郑文山等发布微生物组单细胞测序新技术Microbe-seq(王军/戴磊/晁彦杰点评)...
  17. 为什么我们要学习Microsoft Graph
  18. 专科毕业五年,曲线救国进腾讯
  19. iOS 的 (签名验签)Code Signing 体系
  20. excel拆分单元格,然后每个拆分出的单元格沿用原未拆分单元格内容

热门文章

  1. 域名过了赎回期多久可以开放注册
  2. POSIX ACL详解
  3. hmailserver创建MySQL失败_[hmailserver]新建用户与Email错误
  4. php cs fixer 怎么用,php代码格式化工具 php-cs-fixer的使用
  5. WIN7 开启PAE突破4G内存使用限制
  6. 32位Win7使用ReadyFor4GB后MacDrive失效的解决办法
  7. QQ珊瑚虫案事件背景
  8. python编写FCFS和SJF
  9. QCC300x笔记(3) -- QCC3007开发调试经验
  10. ISO20000 服务目录