使用以下代码连接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 Error 400:Bad Request”。有人可以指点我哪里出错了吗?
答案 0 :(得分:3)
根据API documentation,您至少缺少一个标题。尝试:
req = urllib2.Request(url, data, {"Content-type": "application/json"})
如果这还不够,请尝试在数据上使用urllib.urlencode。如果仍然不够,请在请求中添加user:password,如API示例中所示。
答案 1 :(得分:2)
我已经弄清楚了。感谢TryPyPy,我需要在我的请求中添加“内容类型”标题。
我不得不从我的身份验证字符串中删除任何换行符和换行符。
auth_string = base64.encodestring('%s:%s' % (username, password)).strip()