将urllib2 POST转换为请求

时间:2013-06-19 17:17:40

标签: python python-requests

我有一个使用urllib2的现有Http POST:

data = 'client_id=%s&client_secret=%s&grant_type=authorization_code&code=%s&redirect_uri=%s' % (settings.GOOGLE_CLIENT_ID, settings.GOOGLE_CLIENT_SECRET, code, redirect_uri)

req = urllib2.Request(access_token_url, data=data)
response = urllib2.urlopen(req)
response_content = response.read()

json_response = json.loads(response_content)

我正在尝试将其转换为Requests库(http://docs.python-requests.org/),但我收到400无效请求。

这是我的尝试:

params = {'redirect_uri' : redirect_uri}
params['client_id'] = settings.GOOGLE_CLIENT_ID
params['client_secret'] =  settings.GOOGLE_CLIENT_SECRET
params['grant_type'] = 'authorization_code'
params['code'] = code

req = requests.post(access_token_url, data=params)
json_response = req.json()

我尝试将其调整为使用params而不是数据,但我得到了相同的错误。

我缺少什么?

1 个答案:

答案 0 :(得分:0)

确保数据字典的值尚未转义,因为requests会为您执行此操作。请注意您的原始示例如何不进行任何转义。