回到微信的話題上來。目前我們需要完成的一件事是,當(dāng)接受到微信服務(wù)器的 GET 請求時,直接響應(yīng)請求中的 echostr
參數(shù)的內(nèi)容即可。
把 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 參數(shù)部分,大概形如:
signature=xx×tamp=xxx&nonce=xxx&echostr=xxx
各個參數(shù)的順序是不一定的,如果參數(shù)中有非 ascii 的內(nèi)容,它還是被編碼后像 xx%xx%
這種樣子的。
我們現(xiàn)在不關(guān)心驗(yàn)證,只是簡單地把 echostr
的值取出來返回即可。
獲取 echostr
的值方法是通過正則表達(dá)式拿到 echostr=
后面的所有內(nèi)容,然后用 &
字符切一下就好了。這樣不管 echostr
字段其順序是在中間還是在最后,都可以正常處理。
signature=xx×tamp=xxx&nonce=xxx&echostr=xxx signature=xx&echostr=xxx&nonce=xxx×tamp=xxx
把代碼通過 svn 提交,這樣在測試賬號的頁面,就可以把對接服務(wù)的 URL 設(shè)置上了。這里推薦設(shè)置成 http://xxx.sinaapp.com/wx
的形式,加一個 /wx
的 PATH 方便后面的邏輯切分,當(dāng)然,我們現(xiàn)在在 wsgi 接口上的處理還完全不涉及請求的 PATH 。
更多建議: