文档章节

微信公众号https封装(java版)

快乐的小火柴
 快乐的小火柴
发布于 2017/08/25 11:06
字数 544
阅读 129
收藏 1

  我自己在公司第一次接触微信公众号,有很多的不熟悉。查了很多的资料。看了微信开发的官方文档。但是微信的官方文档是php版的。可怜我php虽然学过一点。但是都交给了我的老师,深感惭愧。不过还好网络上的一位大牛写了java版的微信开发。其中的一个https封装我感觉有点繁琐。又根据自己的能力和网上的相关例子该进了一下。希望对有需要的有一些帮助。大牛的博客链接:http://www.cnblogs.com/liuhongfeng/p/4846260.html

1.因为微信的一些接口的访问是https的链接。证书的访问是我们需要解决的问题。我们采用忽略证书,信任所有的证书来封装一个方法;

//https信任所有请求创建
	public static CloseableHttpClient createSSLClientDefault(){
	        try {
	             SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
	                 //信任所有
	                 public boolean isTrusted(X509Certificate[] chain,
	                                 String authType) {
	                     return true;
	                 }
	             }).build();
	             SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
	             return HttpClients.custom().setSSLSocketFactory(sslsf).build();
	         } catch (KeyManagementException e) {
	             e.printStackTrace();
	         } catch (NoSuchAlgorithmException e) {
	             e.printStackTrace();
	         } catch (KeyStoreException e) {
	             e.printStackTrace();
	         }
	        return  HttpClients.createDefault();
	    }

2.我们根据微信的接口来封装数据,

url:我们请求的url比如:

// 菜单创建(POST) 限100(次/天)
    public static String menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";

method:get或者post

data:我们post请求所要携带的数据请求,

最后我们返回的是json的数据格式。这样就可以进行https的请求了

/**
     * 发送Https请求并获取结果
     * @param requestUrl
     * @param method
     * @param data
     * @return
     */
	public static JSONObject httpRequset(String url,String method,String data){
		CloseableHttpResponse responeOne=null;
		HttpUriRequest httpUriRequest=null;
		JSONObject jsonObject=null;
		HttpPost httpPost=null;
		StringBuffer stringBuffer=new StringBuffer();
		// 创建SSLContext对象,并使用我们指定的信任管理器初始化
  	    CloseableHttpClient client=createSSLClientDefault();
  	    if(method.equals("GET")){
  	    	httpUriRequest=new HttpGet(url);
  	    }
  	    if(data!=null){
  	    	 httpPost=new HttpPost(url);
  	    	jsonObject=JSONObject.fromObject(data);
  	      	StringEntity entityString = new StringEntity(jsonObject.toString(),"utf-8");//解决中文乱码问题
  	    	httpPost.setEntity(entityString);
  	    }
  	     try {if(httpUriRequest!=null){
  	    	responeOne=  client.execute(httpUriRequest);
  	     }else{
  	    	responeOne=  client.execute(httpPost);
  	     }
  	    	
  	    	responeOne.setHeader("Content-Type", "application/json");
  	    	HttpEntity entity=responeOne.getEntity();
  	    	InputStream	in = entity.getContent();
  	    	String jsonContent=IOUtils.toString(in, "utf-8");
  	    	jsonObject=JSONObject.fromObject(jsonContent);
			
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
  	    
  	    
		return jsonObject;
	}

谢谢你的观看,希望能帮助到你。转载请注明出处。

© 著作权归作者所有

快乐的小火柴
粉丝 3
博文 26
码字总数 10031
作品 0
杭州
程序员
私信 提问
坑爹的 Java 可变参数,把我整得够惨。。

最近在写一个功能点,用了 Java 中的可变参数,真是把我搞得够惨。。 什么是可变参数? 就是方法参数用 三个点形式,一个参数可以接收多个参数。 实际的代码就不帖了,来看这个示例吧: 示例...

Java技术栈
06/10
39
0
Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

Spring Cloud 的注册中心可以由 Eureka、Consul、Zookeeper、ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netflix 的 Eureka 做了二次封装,完成分布式服务中服...

Java技术栈
04/03
91
0
微信开发 Java SDK - Weixin Java Tools

微信开发 Java 开发工具包(SDK),支持包括微信支付、微信开放平台、小程序、企业号/企业微信、公众号(包括服务号和订阅号)等的后端开发。 本开发工具包基于chanjarster的同名SDK,增加了...

班纳睿
2016/12/22
118K
111
Java微信开发_00_资源汇总贴

1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E......

rayner
2017/08/07
0
0
weixin-java-tools 1.1.0 发布,重大更新版本

weixin-java-tools 1.1.0 发布(重大更新) issue #23 添加日志输出 issue #66 微信消息去重 issue #69 添加Session支持 issue #71 用xstream替换了jaxb issue #72 企业号成员的avatar和sta...

jarchan
2015/01/23
3.9K
3

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部