微信公众号--接收信息
2016-12-19 18:58
183 查看
自己申请的微信公众号来学习微信公众号的开发,至于申请的流程本来想整理一下再发出来的,但是今天碰到一个估计很多人都会碰到的小问题,就是接收文本信息时候的数据处理,在这里就顺便将微信公众号对于接收文本信息作出的一个记录。
文本消息
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型
这是从微信开发者文档中截出来的文档,服务器接收公众号平台以post请求发送过来的信息,开发人员需要对得到的数据进行包装后抛出。
由于刚进行对于微信公众号的开发,很多东西都没有进行更好的封装,都暴露在接口处,在后期开发的时候将会将该封装的都封装起来,让代码风格看起来更清爽。
这是我编写的接口:
得到的xml的格式为:
里面用到了xml转化成对象以及对象转换成xml的过程。
开发过程中,碰到的问题就是,明明看着xml的格式是正确的,并且能正确接收到输入的数据,但是微信公众平台始终显示‘该官方账号暂时无法提供服务,请稍后再试’。
刚开始以为是xml的格式有问题,在xml数据中加上
以这样的格式传输过去的时候确实能够正确的返回数据。。。这个大坑。。。
文本消息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型
这是从微信开发者文档中截出来的文档,服务器接收公众号平台以post请求发送过来的信息,开发人员需要对得到的数据进行包装后抛出。
由于刚进行对于微信公众号的开发,很多东西都没有进行更好的封装,都暴露在接口处,在后期开发的时候将会将该封装的都封装起来,让代码风格看起来更清爽。
这是我编写的接口:
@RequestMapping(value = "/valid", method = RequestMethod.POST) @ResponseBody public String accpetMessage(HttpServletRequest request) throws IOException { request.setCharacterEncoding("utf-8"); Map<String, String> param = MessageUtil.xmlToMap(request); String fromUserName = param.get("FromUserName"); String toUserName = param.get("ToUserName"); String msgType = param.get("MsgType"); String content = param.get("Content"); Long createTime = Long.valueOf(param.get("CreateTime")); Long msgId = Long.valueOf(param.get("MsgId")); System.out.println("--------->" + param); String message = null; if ("text".equals(msgType)) { TextMessage text = new TextMessage(); text.setContent("the message is:"+content); text.setCreateTime(createTime); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setMsgType("text"); text.setMsgId(msgId); message = MessageUtil.textMessageToXml(text); System.out.println("message--------->" + message); } return message; }
得到的xml的格式为:
<xml> <ToUserName>ocQcEvxKvjK3I24qDGkdObwfX2CQ</ToUserName> <FromUserName>gh_0a599cb04a12</FromUserName> <CreateTime>1482142737</CreateTime> <MsgType>text</MsgType> <Content>the message is:Gags</Content> <MsgId>6365754583835498455</MsgId> </xml>
里面用到了xml转化成对象以及对象转换成xml的过程。
开发过程中,碰到的问题就是,明明看着xml的格式是正确的,并且能正确接收到输入的数据,但是微信公众平台始终显示‘该官方账号暂时无法提供服务,请稍后再试’。
刚开始以为是xml的格式有问题,在xml数据中加上
<xml> <ToUserName><![CDATA[fromUser]]></ToUserName> <FromUserName><![CDATA[toUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
以这样的格式传输过去的时候确实能够正确的返回数据。。。这个大坑。。。
相关文章推荐
- Python+Django开发微信公众号验证通过但微信推送信息接收不到的问题解答
- 微信公众号,菜单扫码重定向获取用户信息
- 微信通过openID发送消息/后台post、get提交并接收数据 C# .NET 配置404,500等错误信息 连接字符串
- 微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆
- 微信公众号开发系列-网页授权获取用户基本信息
- android mina 客户端无法接收信息的原因
- 微信公众号(服务号)当用户关注的时候,显示两条服务器信息
- 接收事务处理接口表及错误信息表
- 根据java的设计原则、设计模式实现了一个信息发送和接收的例子
- 微信公众号开发-接收与回复消息
- PHP开发中接收复选框信息的方法
- 接收http请求然后调用mina给客户端发送信息 spring,spring mvc ,
- Android Mms专题之:接收信息流程
- GPS定位信息的接收
- .net 微信公众号开发之接收事件推送与消息排重的方法
- php开发微信公众号,接收粉丝过来的小视频
- 微信公众号获取OpenId(用户授权)(无需关注公众号)以及获取用户基本信息
- C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)
- PHP 接收checkbox复选框信息的方法