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. Xamarin Forms启动自带模拟器缓慢
  2. PHP运行神器--用HHVM减少你一半的服务器
  3. rocks自建存储流程
  4. webpack -v 指令报错
  5. java怎么往右浮动_[Java教程]jQuery实现页面滚动时智能浮动定位
  6. SAP Spartacus FeaturesConfig
  7. 前端 圆形进度图_CSS3+JS实现静态圆形进度条
  8. hash表冲突处理方法
  9. 95-080-058-源码-启动-启动taskexecutor
  10. 初学者python笔记(内置函数_2)
  11. Spring Boot 2.0 整合 ES 5 文章内容搜索实战
  12. 激光雕刻机的位图-GCode转换方法实践
  13. CorelDRAWX4的VBA插件开发(三十六)调用C++实现一键智能群组(第5节)导出动态链接库并在VBA中静态调用
  14. 【最全解决方案】WPS软件复制PDF后粘贴到Word格式混乱,如图,如何解决?
  15. 短信工具类——mo信通
  16. 计算机多媒体培训总结,教师多媒体培训心得体会3篇
  17. 【JavaSE系列】 第九话 —— 多态那些事儿
  18. (4.3)符号表和符号解析
  19. 7-5 球的表面积和体积 (10 分)
  20. 【论文阅读30】-《Autocuts: Simultaneous Distortion and Cut Optimization for UV Mapping》

热门文章

  1. 让小孩学Python语言编程有意义吗?
  2. android l 新功能,Android L怎么样 安卓L新特性汇总
  3. 测试人必知的Web安全相关面试题,加分必看!
  4. python 极坐标图xlabel_matplotlib极坐标图刻度/轴标签位置
  5. 【Unity游戏开发基础】如何在游戏菜单中实现下拉列表选择画面质量
  6. 360移动端性能监控实践QDAS-APM(iOS篇)
  7. linux运行游戏模拟器,Linux_用XMAME模拟器在Linux上玩游戏,安装:如果你使用的是debian或 - phpStudy...
  8. fabpot php cs fixer,使用composer安装php-cs-fixer
  9. 【报错】express-jwt: `algorithms` is a required option
  10. 【转】什么是好的网页设计