[英]HTTP Error 400 when trying to send json data with urllib2 to toggl api
當使用以下代碼連接到toggl api時,我可以連接並獲得授權。
username = token
password = 'api_token'
url = 'http://www.toggl.com/api/v3/tasks.json'
req = urllib2.Request(url)
auth_string = base64.encodestring('%s:%s' % (username, password))
req.add_header("Authorization", "Basic %s" % auth_string)
f = urllib2.urlopen(req)
response = f.read()
當我嘗試啟動新任務時,我必須以json格式發送數據。 為了測試,我創建了json對象並將數據添加到我的Request對象中
data = simplejson.dumps({
'task':{
'duration': 1,
'billable': True,
'start': '2010-02-12T16:19:45+02:00',
'description': 'This is a test task',
}
})
req = urllib2.Request(url, data)
但是現在我收到的唯一響應是“ urllib2.HTTPError:HTTP錯誤400:錯誤的請求”。 有人可以指出我要去哪里了嗎?
根據API文檔 ,您至少缺少一個標頭。 嘗試:
req = urllib2.Request(url, data, {"Content-type": "application/json"})
如果這還不夠,請嘗試對數據使用urllib.urlencode 。 如果這還不夠,請在請求中添加一個user:password,如API示例中所示。
我已經知道了。 多虧了TryPyPy,我需要在請求中添加“ Content-type”標頭。
我必須從身份驗證字符串中刪除所有換行符和換行符。
auth_string = base64.encodestring('%s:%s' % (username, password)).strip()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.