我正在尝试使用toggl api。
我使用Requests而不是Urllib2来执行我的GETs en POSTS。但我被卡住了。
payload = {
"project":{
"name":"Another Project",
"billable":False,
"workspace":{
"Name":"jorrebor's workspace",
"id":213272
},
"automatically_calculate_estimated_workhours":False
}
}
url = "https://www.toggl.com/api/v6/projects.json"
r = requests.post(url, data=json.dumps(payload), auth=HTTPBasicAuth('j_xxxxx@gmail.com', 'mypassword'))
身份验证似乎很好,但有效负载格式可能不是。
具有相同参数的curl命令:
curl -v -u heremytoken:api_token -H "Content-type: application/json" -d "{\"project\":{\"billable\":true,\"workspace\":{\"id\":213272},\"name\":\"Another project\",\"automatically_calculate_estimated_workhours\":false}}" -X POST https://www.toggl.com/api/v6/projects.json
工作正常。
我的有效载荷有什么问题?得到的回应是: [“名称不能为空”,“工作区不能为空”]
这使我得出结论认证工作,但toggl无法读取我的json对象。
答案 0 :(得分:2)
似乎您应该尝试将标头设置为JSON
应用程序,而不是默认格式,并发送JSON
对象而不是Python dict
。在这里查看:
payload = {"project":{"name":"Another Project",
"billable":False,
"workspace":{"Name":"jorrebor's workspace",
"id":213272},
"automatically_calculate_estimated_workhours":False
} }
parameters_json = json.dumps(payload)
headers = {'Content-Type': 'application/json')
r = client.post(url, data=parameters_json, headers=headers)
应该允许网站读取json对象。