簡體   English   中英

嘗試將帶有urllib2的json數據發送到Toggl API時出現HTTP錯誤400

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM