基于JAVA的微信公众号开发【学习二】
来源:互联网 发布:淘宝网的交易模式 编辑:程序博客网 时间:2024/06/05 21:02
遇到的坑:
40027 不合法的子菜单按钮URL长度
在这里,我明明把url与微信开发文档上换成一样的了,但是还是会爆这个错。。后来我发现是我转换的JSON格式中 URL是大写的字样,而开发文档上是小写的。
所以需要改自己定义的ViewButton类中用到的get set方法中属性名字。
同理,如果说遇到这类问题,确保自己URL或者KEY是合格的,那么肯定就是JSON的问题啦。
关于花生壳的使用
因为自从上次使用到现在,我发现花生壳新产生的域名后面会带上端口号!!!
而微信要正确连接到自己映射出的本地服务器的话,需要80端口。所以我觉得花生壳在这点上似乎不能用了QAQ。所以我又去用了ngrok。
https://ngrok.com 这是他们的官网。下载过后,再登录。按照首页教你的方法就可以操作啦~~~~
正式开始这次的总结
微信消息接收与发送
XML
将xml变成Map
public static Map<String,String> xmlToMap(HttpServletRequest request){ Map<String, String> map = new HashMap<String, String>(); SAXReader reader = new SAXReader(); InputStream inputStream; try { inputStream = request.getInputStream(); Document doc = reader.read(inputStream); Element root = doc.getRootElement(); List<Element> list = root.elements(); getEliments(list, map); inputStream.close(); return map; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return null; }private static void getEliments(List<Element> sonEliment, Map<String, String> map) { for (Element element : sonEliment) { if (element.elements().size() != 0) { getEliments(element.elements(), map); } else { map.put(element.getName(),element.getText()); } } }
将对象变为XML
提前封装一个TextMessage的类
//其它6中消息参见开发文档 private String ToUserName; private String FromUserName; private String CreateTime; private String MsgType; private String Content; private String MsgId;//。。。public String TextMessageToXML(TextMessage textMessage){ XStream xStream = new XStream(); xStream.alias("xml", textMessage.getClass());//根标签一定是xml return xStream.toXML(textMessage); }
JSON
String menu = JSONObject.fromObject(InitMenu.initMenu()).toString(); //这里就只说将拼装的菜单转为json格式吧
菜单
菜单的种类不说了(详情参见文档)
请求方式
POST
public static JSONObject doPost(String url,String outStr){ CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); JSONObject jsonObject = null; try { httpPost.setEntity(new StringEntity(outStr,"utf-8")); CloseableHttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); if(entity != null){ String result = EntityUtils.toString(entity,"UTF-8"); jsonObject =JSONObject.fromObject(result); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return jsonObject; }
GET
public static JSONObject doGet(String url) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); JSONObject jsonObject = null; try { CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity(); if (entity != null) { //entity 转为 String , String再转为JSONObject String result = EntityUtils.toString(entity, "UTF-8"); jsonObject = JSONObject.fromObject(result); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return jsonObject; }
阅读全文
0 0
- 基于JAVA的微信公众号开发【学习二】
- 基于JAVA的微信公众号开发【学习一】
- 基于java的微信公众平台开发视频教程
- 基于Django的微信公众号开发(3) -- 通过微信公众号开发者认证
- 项目总结-基于SpringMVC的微信公众号开发
- 基于python的微信公众号开发
- 基于play Framework 2.2的微信公众号开发
- 微信公众号的开发之 自定义菜单(二)
- 微信公众号开发(二)
- 用java开发微信公众号:公众号接入和access_token管理(二)
- 用java开发微信公众号:公众号接入和access_token管理(二)
- Java微信公众号开发--开发环境的搭建
- 微信公众号JAVA开发学习笔记(一) 公众号开发准备
- 我的微信公众号开发学习整理
- 微信公众号的开发学习《1》
- 微信公众号开发学习地址
- 微信公众号开发学习
- 微信公众号开发学习
- Android animation-list 逐帧
- WINDOWS核心编程——Windows内存管理
- 关于php 无法正常连接mysql 数据库,界面显示内部错误,返回值500
- 关于TCP 半连接队列和全连接队列
- Tinker 的接入
- 基于JAVA的微信公众号开发【学习二】
- 8 种 NoSQL 数据库系统对比
- 机器学习第一周(补)
- Oracle 12c连接时报错ORA-28040问题解决方法
- 割边 -- 桥
- JSP学习---page指令细节、include指令细节和安全登录
- E
- json 遍历 获取 key 和 value
- 8086汇编-图示HANOI的移动过程