codecamp

SAE 对接服务

回到微信的话题上来。目前我们需要完成的一件事是,当接受到微信服务器的 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 。


SAE wsgi简单介绍
SAE 了解数据格式
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }