3,143
社区成员
发帖
与我相关
我的任务
分享
CentOS 7
Python 3.7
Flask 1.1.1
tornado 6.0.3
xml_data = request.stream.read()
xml_objt = receive.parse_xml(xml_data)
if xml_objt.MsgType == "text":
text_str = '''<xml><ToUserName>![CDATA[%s]]</ToUserName><FromUserName>![CDATA[%s]]</FromUserName><CreateTime>%s</CreateTime><MsgType>![CDATA[text]]</MsgType><Content>![CDATA[%s]]</Content></xml>'''
response = make_response(text_str % (xml_objt.FromUserName, xml_objt.ToUserName, str(int(time.time())), xml_objt.Content))
response.headers['content-type'] = 'application/xml'
return response
else:
return make_response("")
# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
def parse_xml(web_data):
if len(web_data) == 0:
return None
xmlData = ET.fromstring(web_data)
msg_type = xmlData.find('MsgType').text
print(msg_type, xmlData)
print(ET.tostring(xmlData))
if msg_type == 'event':
event_type = xmlData.find('Event').text
if event_type == 'CLICK':
return Click(xmlData)
elif event_type in ('subscribe', 'unsubscribe'):
return Subscribe(xmlData)
elif msg_type == 'text':
return TextMsg(xmlData)
elif msg_type == 'image':
return ImageMsg(xmlData)
elif msg_type == 'voice':
return VoiceMsg(xmlData)
else:
return Msg(xmlData)
class Msg(object):
def __init__(self, xmlData):
self.ToUserName = xmlData.find('ToUserName').text
self.FromUserName = xmlData.find('FromUserName').text
self.CreateTime = xmlData.find('CreateTime').text
self.MsgType = xmlData.find('MsgType').text
class TextMsg(Msg):
def __init__(self, xmlData):
Msg.__init__(self, xmlData)
self.Content = xmlData.find('Content').text
1. 接口返回值中没有空格
2. 接口返回值字段取值正确,ToUserName和FromUserName没反
3. xml返回值的节点名正确
4. 返回值编码没问题
5. 公众号后台服务器配置已启用
6. 域名解析正常、端口访问正常
7. 公众号没有绑定第三方平台
app = Flask(__name__)
app.debug = True
define("debug", default=True, help="Debug Mode", type=bool)
. . .
if __name__ == '__main__':
options.parse_command_line()
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(80)
IOLoop.instance().start()
另外,接口URL也是毫无问题的,不存在缺少'/'的问题