打通微信(一)
来源:互联网 发布:网络视频广告投放 编辑:程序博客网 时间:2024/04/30 10:19
目录
笔者接到一个企业微信公众号开发的项目,需要调用微信的api,翻看网络上的教程,大多难以有实质性的帮助,只能自己摸索摸索一番,其中调试时,着实花费了一番功夫,
首先申请一个免费的域名
直接百度上搜索 花生壳,下载 —-安装—-点击域名列表—–添加映射—–花6块钱,——将你的自己的IP和花生壳给的域名相绑定,端口填你的tomcat端口,
设置网页授权
登录公总号的后台,设置可信网页授权
设置按钮
在自定义菜单中点击添加
实际组件
需要在java 后台模拟http请求向微信端调用登录者的详细信息,
1.导包
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>${httpmime.version}</version></dependency>
登录者点击你给的按钮,按钮后面的url会经过微信,微信来进行回调你,所以如果你需要本地调试,就得有一个独立的域名,
模拟http的get请求和post请求
public HttpResultBean componentGetJson(String key, Map<String, String> urlParas, Object postData) { String url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token={access_token}"; if(StringUtil.isNullOrBlank(url)){ return null; } if(urlParas == null){ urlParas = new HashMap<>(); } url = RequestUtil.buildUrl(url, urlParas); HttpResultBean resultBean= HttpUtil.getData(url); return resultBean; }
处理url中的参数问题
public String buildUrl(String url,Map urlparas){ String fieldStart = "\\{"; String fieldEnd = "\\}"; if (map == null) { return format; } String regex = fieldStart + "([^}]+)" + fieldEnd; Set<String> fields = getCustomField(format, fieldStart, fieldEnd); String result = format; for (String field: fields){ String newVal = map.get(field); if(newVal == null){ newVal = ""; } result = result.replaceAll(fieldStart + field + fieldEnd, newVal); }return result;}
public static HttpResultBean getData(String url, String path) { CloseableHttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet(url); CloseableHttpResponse response = null; HttpResultBean result = new HttpResultBean(); try { response = client.execute(get); StatusLine status = response.getStatusLine(); result.setStatus(status.getStatusCode()); HttpEntity entity = response.getEntity(); String content = ""; content = EntityUtils.toString(entity, "UTF-8"); result.setContent(content); result.setContentType(entity.getContentType().getValue()); Header encodingHeader = entity.getContentEncoding(); if (encodingHeader != null) { result.setContentEncoding(encodingHeader.getValue()); } result.setContentLength(entity.getContentLength()); } catch (IOException e) { return null; } finally { if (response != null) { try { response.close(); } catch (IOException e) { } } } return result; }
阅读全文
0 0
- 打通微信(一)
- 打通微信通信第一步
- 打通WordPress和微信公众号
- 微信公众平台微信支付打通流程
- 微信打通腾讯地图 提供地图API接口
- asp.net微信支付打通发货通知代码
- iOS微信登录的坑,unionid打通
- [微信开发]打通微信公众平台到开发者服务器的第一道屏障
- 打通IE保护模式(一)介绍保护模式
- 为什么腾讯要将QQ和微信平台打通?[知乎]
- 站帮网微管家 为你打通微信和Discuz论坛社区
- 微信公众平台新增“微信连Wi-Fi”功能,打通线上线下闭环
- 兴趣部落打通微信公众号,两大平台联手优化兴趣社交体验
- 微信应用号开发知识贮备之打通React Component任督二脉
- 今日小程序推荐:汇率即时查-打通微信直接搜一搜
- 微信大屏幕(一)
- 微信开发(一)
- 微信支付(一)
- ThinkPHP3.2.3将session放置到指定文件夹中
- Java关于23种设计模式的有趣见解
- 3-6 静态数据成员与静态成员函数
- git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支
- CSS属性大全
- 打通微信(一)
- Github年度百大框架排行榜
- 顺势回落、卷土重来
- COMData
- ThinkPHP实现事务回滚示例代码
- HDU3887 Counting Offspring【dfs序】
- bzoj2456: mode
- 趣图 | 我可以放你一马
- 程序员揭秘:左右脑年龄测试刷屏票圈的真实内幕