Java微信号开发基础篇
来源:互联网 发布:殷素素 俞岱岩 知乎 编辑:程序博客网 时间:2024/04/29 10:27
有两种开发模式,编辑模式和开发者模式,编辑模式就是简单的网上直接像word写文档一样,下面就说一下开发者模式。
一 环境搭建
- 申请一个微信公众号
- 外网映射工具(开发调试用)
- 在官网实现开发者模式接入
二 消息的接收与响应
微信客户端发送数据,先包装成xml文件的格式,提交到servlet,在服务端通过解析获得请求数据,在后台进行处理后,把结果再次包装成xml通过PrintWriter的方式给客户端。
如以下一个自己写的逻辑,客户端发送“1”,“2”文本内容回复不同的内容,关注该公众号,获取位置信息等event同样也回复不同内容:
if(MessageUtil.MESSAGE_TEXT.equals(msgType)){ if("1".equals(content)){ message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.firstMenu()); }else if("2".equals(content)){ message = MessageUtil.initNewsMessage(toUserName, fromUserName); } }else if(MessageUtil.MESSAGE_EVNET.equals(msgType)){ String eventType = map.get("Event"); if(MessageUtil.MESSAGE_SUBSCRIBE.equals(eventType)){ message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.menuText()); }else if(MessageUtil.MESSAGE_CLICK.equals(eventType)){ message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.menuText()); } }else if(MessageUtil.MESSAGE_LOCATION.equals(msgType)){ String label = map.get("Label"); message = MessageUtil.initText(toUserName, fromUserName, label); }
为了方便,这里可以数据封装到类中,再通过xstream将对象解析成xml,这时就要在“开发者文档”中根据相应的xml数据结构创建类(字段的大小写很重要),而且在解析成xml的时候要注意标签的替换(因为要符合微信官方规定的结构)。
三 素材管理接口
通过调用相应的接口,可以实现素材的上传,得到一个该素材的ID,这样就可以给客户端回复图片,语言等消息了,而不再是简单的文本消息。
接口的提交有两种方式,返回的是json数据格式:
- 不带参数的get方式,比如说获取票据access_token,获取和删除自定义菜单
- 带参数的post方式,比如说创建,生成自定义菜单。
要注意的一点是:文件的上传和自定义菜单的创建都是Post请求,但文件上传是以流的形式,而Post请求是以String提交给服务端的。
实例代码:
/* * 生成Menu */ public static int createMenu(String token, String menu) throws Exception { int result = 0; String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token); JSONObject jsonObject = doPost(url, menu); if(jsonObject != null) { result = jsonObject.getInt("errcode"); } return result; }
其中doPost方法为:
/* * post,将组装的参数提交到接口地址 * 需要提交参数时调用 */ public static JSONObject doPost(String url, String outStr) throws Exception { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); JSONObject jsonObject = null; // 将传过来的参数加进去 httpPost.setEntity(new StringEntity(outStr, "utf-8")); HttpResponse response = httpClient.execute(httpPost); String result = EntityUtils.toString(response.getEntity(), "utf-8"); jsonObject = JSONObject.fromObject(result); return jsonObject; }
0 0
- Java微信号开发基础篇
- java 基础题 信号报告
- Java开发中常见的危险信号
- Java开发中常见的危险信号
- Java开发中常见的危险信号
- JAVA开发手册-基础篇-开发规范
- node.js 开发微信号
- Linux基础篇——信号
- 零基础学习JAVA编程题——信号报告
- 信号报告 java基础题 switch——case
- Java WEB开发须知知识点---基础篇
- Java WEB开发须知知识点---基础篇
- [置顶]java开发之基础篇2
- Java Web开发实战经典(基础篇)
- Java MongoDB非框架开发基础篇
- java多线程开发基础
- java基础-开发前奏
- java开发入门基础
- 配置notepad++运行java
- linux下mysql开启远程连接
- C#操作Excel
- poj 2421
- 链表中倒数第k个结点
- Java微信号开发基础篇
- docker源码学习-基础架构
- js定时器那些事
- mysql 5.7 设置root密码方法
- 实现字符串的反转
- ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)
- C++builder 中字符串、string
- 1.2节练习
- PL/SQL基础(3):小专题