SAE 对接服务
2018-07-24 15:17 更新
回到微信的话题上来。目前我们需要完成的一件事是,当接受到微信服务器的 GET 请求时,直接响应请求中的 echostr
参数的内容即可。
把 index.wsgi
改成:
# -*- coding: utf-8 -*- import re def application(environ, start_response): q = environ.get('QUERY_STRING') m = re.findall('echostr=(.*)', q)[0] s = m.split('&', 1)[0] start_response('200 ok', [('content-type', 'text/plain')]) return [s]
先使用 environ.get('QUERY_STRING')
获取 GET 参数部分,大概形如:
signature=xx×tamp=xxx&nonce=xxx&echostr=xxx
各个参数的顺序是不一定的,如果参数中有非 ascii 的内容,它还是被编码后像 xx%xx%
这种样子的。
我们现在不关心验证,只是简单地把 echostr
的值取出来返回即可。
获取 echostr
的值方法是通过正则表达式拿到 echostr=
后面的所有内容,然后用 &
字符切一下就好了。这样不管 echostr
字段其顺序是在中间还是在最后,都可以正常处理。
signature=xx×tamp=xxx&nonce=xxx&echostr=xxx signature=xx&echostr=xxx&nonce=xxx×tamp=xxx
把代码通过 svn 提交,这样在测试账号的页面,就可以把对接服务的 URL 设置上了。这里推荐设置成 http://xxx.sinaapp.com/wx
的形式,加一个 /wx
的 PATH 方便后面的逻辑切分,当然,我们现在在 wsgi 接口上的处理还完全不涉及请求的 PATH 。
以上内容是否对您有帮助:
更多建议: