2013-06-19 58 views
-1

我有一個現有的HTTP POST使用的urllib2:轉換urllib2的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) 

我試圖將其轉換爲請求庫,而不是(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,而不是數據,但我得到了同樣的錯誤。

我錯過了什麼?

+0

不應該是'req = requests.post(access_token_url,params = params)的正確調用' –

+0

我試過params,但沒有奏效。 – dannyroa

+0

你能編輯你的問題來插入完整的錯誤信息。您是否嘗試使用像Wireshark這樣的工具來捕獲網絡活動來檢查請求以查明問題? –

回答

0

請確保數據字典的值尚未轉義,因爲requests會爲您執行此操作。請注意您的原始示例沒有進行任何轉義。

+0

我沒有做任何轉義。 – dannyroa