【问题标题】:how to make a POST request in python and webapp2如何在 python 和 webapp2 中发出 POST 请求
【发布时间】:2013-09-30 20:11:37
【问题描述】:

我正在尝试使用 python 和带有 webapp2 的谷歌应用引擎向 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)

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

【问题讨论】:

    标签: python google-app-engine post webapp2


    【解决方案1】:

    您需要在 Appengine 上使用 Google 的 URL Fetch 库。试试这个:

    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)
    

    【讨论】:

    • 非常感谢,这成功了(当然,使用 urbl -> url)。我也设法让它与 urllib2 一起工作,但我认为这更优雅。
    【解决方案2】:

    继续 Linuxious 答案。您需要使用来自urlliburlencode 对数据进行编码。否则你会得到一个错误,抱怨负载需要是一个字符串。因此:

    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)
    

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 2013-11-09
      • 2012-06-25
      • 1970-01-01
      • 2017-11-28
      • 2017-11-17
      相关资源
      最近更新 更多