wsgi部署微信服务器,验证的GET通过,但是自动回复的POST请求却不行
目标:利用uwsgi和Django试着做个小的微信公众号自动回复(复读机功能), 出现的问题:只处理get请求,不处理post请求
from django.shortcuts import render
from django.views import View
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import hashlib
from lxml import etree
import xml.etree.ElementTree as ET
import time
# Create your views here.
token = 'chen'
@csrf_exempt
def main(request):
# 如果mian函数被调用,就会打印+++++++++++++++++++++++++++++++++++++
print('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++')
if request.method == "GET":
#如果是微信的验证GET请求
if request.GET:
request_body = request.GET
signature = request_body.get('signature', None)
timestamp = request_body.get('timestamp', None)
nonce = request_body.get('nonce', None)
echostr = request_body.get('echostr', None)
hashlist = [token, timestamp, nonce]
hashlist.sort()
hashstr = ''.join(hashlist)
hashcode = hashlib.sha1()
hashcode.update(hashstr.encode())
hashcode = hashcode.hexdigest()
print('\n\n-----------------------------\n\n')
if hashcode == signature:
return HttpResponse(echostr)
#如果是网页的请求
else:
print('\n\n*****************************\n\n')
return HttpResponse("lele is the most beautiful and beloved dog in the world")
print('\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n\n')
webData = request.body
xmlData = ET.fromstring(webData)
print(xmlData)
msg_type = xmlData.find('MsgType').text
ToUserName = xmlData.find('ToUserName').text
FromUserName = xmlData.find('FromUserName').text
CreateTime = xmlData.find('CreateTime').text
toUser = FromUserName
fromUser = ToUserName
if msg_type == "text":
content = xmlData.find('Content').text
reply = ReplyText(toUser, fromUser, msg_type, content).send()
return HttpResponse(reply)
class ReplyText():
def __init__(self, to_user, from_user, msg_type, content):
self.to_user = to_user
self.from_user = from_user
self.time = int(time.time())
self.msg_type = msg_type
self.content = content
self.raw_text = """<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime><MsgType><![CDATA[{3}]]></MsgType><Content><![CDATA[{4}]]></Content></xml>"""
def send(self):
return self.raw_text.format(self.to_user, self.from_user, self.time, self.msg_type, self.content)
微信验证:通过; 但是自动回复的功能post请求一直不行,显示http/1.1 301
评论 0