Python+Django开发微信公众号验证通过但微信推送信息接收不到的问题解答
2015-02-27 14:40
1146 查看
先说明问题,再说下解决的过程,最后说下解决的方法。其实很简单,但是排查很恶心,可以直接看最后的解决方案。
问题:
我使用:Apache:2.4.7 Ubuntu:12.04 Python:2.7.6 Django:1.6.8开发。做完第一步:微信网站验证成功,之后文档上说微信所有的请求,处理,回复都有转发到我自己的服务器。1.但是我没有收到任何请求(在views.py内没有接收到post请求)。
排查:
1.然后我问了微信平台说没有技术客服。又问了一些微信开发的群,里面本来使用Python进行微信开发的人就少再加之这个问题没有多少人遇到,所以基本上没得到突破。
2.在平台上试探性的找其他可能有帮助的信息,直到找到一个叫报警号的二维码,我可以关注然后得到微信服务器方的报警提示,关注后我尝试发送信息真的得到了报警信息。如下:
Appid: wx90391d14181ccbdc
昵称: 天天搜贷
时间: 2015-02-13 15:04:28
内容: 微信服务器向公众号推送消息或事件后,得到的回应不合法
次数: 5分钟 12次
错误样例: [Event=UnSubscribe][ip=121.41.76.173][response_length=54253][response_content=<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>RuntimeError at /wxcheck</title>
<style type="text/css">
html * { padding:0; margin:0; }
body * { padding:10px 20px; }
body * * { padding:0; }
body { font:small sans-serif; }
body>div { border-bottom:1px solid #ddd; }
h...
报警排查指引,请见: http://url.cn/ab0jnP
然后对照平台上面的报警说明肯定的是微信服务器是发送了请求给我,但是由于使用了Django框架,在请求还没有到达代码时就被Django错误返回了,但现在的问题是微信的提示就那么多,但Django的相应里面是有详细的错误路径和原因的,这些微信里面是查不到的。
3.于是我就是用火狐浏览器测试get类请求是可以的,将get请求重新编辑为post请求重新发送也是可以的,那这里我就纳闷了,我自己的get,post请求都是可以的,但是微信的却使get请求可以post请求是不可以的。也就是说不能重新模拟错误重现。
4.我就想是不是由于微信请求的结构影响造成的,但是微信平台上有没有详细介绍request的结构的部分,所以我打算是用Java先来完整的走通一遍再是用Python做,因为Java是有示例代码的。
5.就在又重新部署Java及tomcat环境的时候想到了,可以是用表单提交post请求模拟微信服务器的请求,而且这个要简洁的多,现在简单的,于是放下第四步先做这个。
6.是用表单执行的post请求终于模拟出了微信请求同样的错误,如下图:
7.我也就知道了这是settings设置里面少一个设置造成的。然后我就添加了这个设置。
8.添加后浏览器直接模拟get,post请求都不行了,只有在后面添加一个“/“才可以。修改公众平台上的配置,在原有的url后面添加”/“
9.一切正常。然后我想重现之前的错误,整理文档的时候发现当我吧settings里面添加的那条配置删掉后没有任何影响!
解决方案:最后知道这种情况只要在url后面添加一个”/“就可以了。
问题:
我使用:Apache:2.4.7 Ubuntu:12.04 Python:2.7.6 Django:1.6.8开发。做完第一步:微信网站验证成功,之后文档上说微信所有的请求,处理,回复都有转发到我自己的服务器。1.但是我没有收到任何请求(在views.py内没有接收到post请求)。
排查:
1.然后我问了微信平台说没有技术客服。又问了一些微信开发的群,里面本来使用Python进行微信开发的人就少再加之这个问题没有多少人遇到,所以基本上没得到突破。
2.在平台上试探性的找其他可能有帮助的信息,直到找到一个叫报警号的二维码,我可以关注然后得到微信服务器方的报警提示,关注后我尝试发送信息真的得到了报警信息。如下:
Appid: wx90391d14181ccbdc
昵称: 天天搜贷
时间: 2015-02-13 15:04:28
内容: 微信服务器向公众号推送消息或事件后,得到的回应不合法
次数: 5分钟 12次
错误样例: [Event=UnSubscribe][ip=121.41.76.173][response_length=54253][response_content=<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>RuntimeError at /wxcheck</title>
<style type="text/css">
html * { padding:0; margin:0; }
body * { padding:10px 20px; }
body * * { padding:0; }
body { font:small sans-serif; }
body>div { border-bottom:1px solid #ddd; }
h...
报警排查指引,请见: http://url.cn/ab0jnP
然后对照平台上面的报警说明肯定的是微信服务器是发送了请求给我,但是由于使用了Django框架,在请求还没有到达代码时就被Django错误返回了,但现在的问题是微信的提示就那么多,但Django的相应里面是有详细的错误路径和原因的,这些微信里面是查不到的。
3.于是我就是用火狐浏览器测试get类请求是可以的,将get请求重新编辑为post请求重新发送也是可以的,那这里我就纳闷了,我自己的get,post请求都是可以的,但是微信的却使get请求可以post请求是不可以的。也就是说不能重新模拟错误重现。
4.我就想是不是由于微信请求的结构影响造成的,但是微信平台上有没有详细介绍request的结构的部分,所以我打算是用Java先来完整的走通一遍再是用Python做,因为Java是有示例代码的。
5.就在又重新部署Java及tomcat环境的时候想到了,可以是用表单提交post请求模拟微信服务器的请求,而且这个要简洁的多,现在简单的,于是放下第四步先做这个。
6.是用表单执行的post请求终于模拟出了微信请求同样的错误,如下图:
RuntimeError at /wxcheck
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to www.ddbid.com/wxcheck/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
Request Method: | POST |
---|
8.添加后浏览器直接模拟get,post请求都不行了,只有在后面添加一个“/“才可以。修改公众平台上的配置,在原有的url后面添加”/“
9.一切正常。然后我想重现之前的错误,整理文档的时候发现当我吧settings里面添加的那条配置删掉后没有任何影响!
解决方案:最后知道这种情况只要在url后面添加一个”/“就可以了。
相关文章推荐
- .net开发微信公众号(3)-接收微信推送的消息
- Django微信公众号开发(一)公众号内网页授权登录后微信获取用户信息
- Django开发微信公众号 一:链接验证与文本信息回复
- IOS iOS本地推送---常用开发中,通过消息传递信息
- 微信公众号开发第九课 微信开发常见错误解答
- 【微信开发系列】1. python开发微信公众号消息回复开发者模式
- python微信九django验证和消息回复
- 微信开发(七)微信网页授权( Oauth )通过Oauth获取用户信息
- django+python微信开发
- 关于集成支付宝在线支付返回信息验证不通过的问题
- C#微信开发之旅(八):通过授权code以及openid获取用户信息
- 用c#开发微信 (4) 基于Senparc.Weixin框架的接收事件推送处理 (源码下载)
- IOS iOS本地推送---常用开发中,通过消息传递信息
- Ruby on Rails微信开发4——通过网页授权获取用户的基本信息
- 关于Script.NET Python开发包的一些问题解答
- 微信公众号php开发接口怎么主动推送信息
- 微信公众平台开发——企业网站与微信的信息推送
- 微信开发调试,当通过其他工具(不经过手机微信,直接填写好XML)调试没有问题,而通过手机无响应
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功。请重试。 Login控件