如何在python和webapp2中发出POST请求

时间:2013-09-30 20:11:38

标签: python google-app-engine post webapp2

我正在尝试使用带有webapp2的python和google app引擎向Health Graph API发出POST请求。我已经看到了一个例子,如下所示:

payload = {'grant_type': 'authorization_code',
    'code': code,
    'client_id': 'xxxxxxxxxxxxxxxxxxxxxxx',
    'client_secret': 'xxxxxxxxxxxxxxxxxxxxxx',
    'redirect_uri': redirect_uri,}
req = requests.post(API_ACCESS_TOKEN_URL, data=payload)

但似乎我无法在Google应用引擎中使用请求模块。有一种简单的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:4)

您需要在Appengine上使用Google的网址抓取库。试试这个:

payload = {'grant_type': 'authorization_code',
    'code': code,
    'client_id': 'xxxxxxxxxxxxxxxxxxxxxxx',
    'client_secret': 'xxxxxxxxxxxxxxxxxxxxxx',
    'redirect_uri': redirect_uri}
result = urlfetch.fetch(url=API_ACCESS_TOKEN_URL, payload = payload, method=urlfetch.POST)

答案 1 :(得分:0)

继续Linuxious的回答。您需要使用urlencode中的urllib对数据进行编码。否则,您会收到一个错误,抱怨有效负载需要是一个字符串。因此:

import urllib
from google.appengine.api import urlfetch

payload = {'grant_type': 'authorization_code',
'code': code,
'client_id': 'xxxxxxxxxxxxxxxxxxxxxxx',
'client_secret': 'xxxxxxxxxxxxxxxxxxxxxx',
'redirect_uri': redirect_uri}

 payload= urllib.urlencode(payload)

 result = urlfetch.fetch(url=API_ACCESS_TOKEN_URL, payload = payload, method=urlfetch.POST)