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&timestamp=xxx&nonce=xxx&echostr=xxx

各个参数的顺序是不一定的,如果参数中有非 ascii 的内容,它还是被编码后像 xx%xx% 这种样子的。

我们现在不关心验证,只是简单地把 echostr 的值取出来返回即可。

获取 echostr 的值方法是通过正则表达式拿到 echostr= 后面的所有内容,然后用 & 字符切一下就好了。这样不管 echostr 字段其顺序是在中间还是在最后,都可以正常处理。

signature=xx&timestamp=xxx&nonce=xxx&echostr=xxx
signature=xx&echostr=xxx&nonce=xxx&timestamp=xxx

把代码通过 svn 提交,这样在测试账号的页面,就可以把对接服务的 URL 设置上了。这里推荐设置成 http://xxx.sinaapp.com/wx 的形式,加一个 /wx 的 PATH 方便后面的逻辑切分,当然,我们现在在 wsgi 接口上的处理还完全不涉及请求的 PATH 。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号