阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

微信公众号-消息收发原理

112次阅读
没有评论

共计 1304 个字符,预计需要花费 4 分钟才能阅读完成。

  • 收发原理

微信公众号 - 消息收发原理

当普通微信用户向公众账号发消息时,微信服务器将 POST 消息的 XML 数据包到开发者填写的 URL 上

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试

  • 自有公众号

微信公众号 - 消息收发原理

  • 测试平台

微信公众号 - 消息收发原理

消息类型

  • 文本消息
  • 图片消息
  • 语音消息
  • 视频消息
  • 小视频消息
  • 地理位置消息
  • 链接消息

各消息类型的推送使用 XML 数据包结构

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1478317060</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[hello]]></Content> <MsgId>1234567890123456</MsgId>:q </xml>

注意:<![CDATA 与]]> 括起来的数据不会被 xml 解析器解析

xmltodic 模块基本使用

安装:pip install xmltodic

作用:可将 XML 数据转为 Python 中的 dict 字典数据,也可将 dict 字典数据转为 XML 数据

  • XML 数据转为 dict 字典数据(parse() 方法)

    import xmltodict xmlStr = """ <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12357975460</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[hello]]></Content> <MsgId>1234567890123456</MsgId> </xml> """ xmlDict = xmltodict.parse(xmlStr)['xml'] for key, val in xmlDict.items(): print(key, "=", val)
  • dict 字典数据转为 XML 数据(unparse() 方法)

    import xmltodict def textMsg(toUser, fromUser, contentType, content): import time responseXMLDict = {"ToUserName": toUser, "FromUserName": fromUser, "CreateTime": int(time.time()), "MsgType": contentType, "Content": content } responseXMLStr = xmltodict.unparse({"xml":responseXMLDict}) return responseXMLStr print(textMsg("toUser", "fromUser", "text","sunck is a good man"))

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-05-26发表,共计1304字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中