flask微信公众号服务器创建失败

monsterzzz
  • 131

这个是我的代码

# -*- coding:utf-8 -*-

from flask import Flask,request
from time import time
import xml.etree.ElementTree as et
import hashlib

app = Flask(__name__)
app.debug = True


text_str = '''<xml>
                <ToUserName>![CDATA[%s]]</ToUserName>
                <FromUserName>![CDATA[%s]]</FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType>![CDATA[text]]</MsgType>
                <Content>![CDATA[%s]]</Content>
                </xml>'''


def reply_muban(type):
    if type == 'text':
        return text_str

@app.route('/',methods=['GET','POST'])
def wechat():

    if request.method == 'GET':
        token = '********'
        data = request.args
        signature = data.get('signature','')
        timestamp = data.get('timestamp','')
        nonce = data.get('nonce','')
        echostr = data.get('echostr','')

        list = [token, timestamp, nonce]
        list.sort()

        s = list[0] + list[1] + list[2]

        hascode = hashlib.sha1(s.encode('utf-8')).hexdigest()

        if hascode == signature:
            return echostr
        else:
            return ""
    if request.method == 'POST':
        xmldata = request.args
        xml_rec = et.fromstring(xmldata)

        ToUserName = xml_rec.find('ToUserName').text
        fromUser = xml_rec.find('FromUserName').text
        MsgType = xml_rec.find('MsgType').text
        Content = xml_rec.find('Content').text
        MsgId = xml_rec.find('MsgId').text

        return reply_muban(MsgType) % (fromUser, ToUserName, int(time()), Content)

if __name__ == '__main__':
    app.run()

token也验证成功了。。
我觉得应该能够返回给用户同样的消息了呀。。。
为什么没有成功呢,微信提示提供的服务出现故障。。。
求帮忙解决....
T T

回复
阅读 2.3k
4 个回答

说实话,我也做了这样的一个测试,也是显示“服务器出现故障”!

我发现一个奇怪的现象,只要我把服务器放在防火墙内,就出现这个问题。不知道为什么?

from flask import make_response
response=make_response(reply_muban(MsgType) % (fromUser, ToUserName, int(time()), Content))
response.content_type = 'application/xml'
return response
zyzs010
  • 2
新手上路,请多包涵

我也遇到这个问题,楼上答案试过了,也不行啊,请问楼主解决这个问题了吗?

清川先生
  • 1
新手上路,请多包涵
xmldata = request.args

这个可能是老版的用法,应该使用:

xmldata = request.stream.read()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏