700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信公众号开发 公众号接口开发 封装统一的GET/POST请求接口

微信公众号开发 公众号接口开发 封装统一的GET/POST请求接口

时间:2022-03-18 13:09:28

相关推荐

微信公众号开发 公众号接口开发 封装统一的GET/POST请求接口

10万+IT人都在关注,史上最全面的微信开发实战教程:包含公众号,小程序,微信支付等开发案例

欢迎关注笔者个人博客:/

在微信公众号/小程序开发过程中,后端服务要用到微信公众平台提供的各种接口,比如创建个性化菜单的接口,网页授权接口,消息事件接口等,事件推送接口等,几乎大多数的微信接口都要用到GET/POST方式的http请求,那么就需要封装一款通用的高效的统一请求接口,笔者把封装好的代码分享出来,这里涉及到2个工具类和1个依赖jar,工具类分别是1个是信任证书管理器工具类,1个是具体的请求接口工具类,依赖的jar见下面的maven依赖,本案例使用Java语言,笔者相关博客中都会用到这2个工具类,需要的开发者朋友直接粘贴拿走就可用,下面直接看具体代码:

一、引入maven依赖jar

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId></dependency>

二、信任证书管理器工具类

/*** 创建时间: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;}}

三、统一请求封装

/*** 创建时间: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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。