我正在尝试使用 toggl api。
我使用 Requests 而不是 Urllib2 来执行 GET 和 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('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1872476060606060587f75797174367b7775" rel="noreferrer noopener nofollow">[email protected]</a>', '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 对象。
最佳答案
似乎您应该尝试将 header 设置为 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 对象。
关于python - 如何使用Python的REQUESTS包发出post请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065707/