将 python 个请求与 curl 进行比较
compare python requests with curl
我正在使用 requests
和 requests_oauthlib
与 API 交互。
我成功验证并访问了 API 的所有 GET
方法,但使用 POST
方法时出现错误 500。例如:
r = oauth.post("https://api.timelyapp.com/1.0/1/clients",
data={"client":{"name":"newclient", "color":"c697c0" }},
allow_redirects=False, headers={"Content-Type": "application/json"})
问题是我用 curl
测试了相同的调用并且它工作正常,这里是 curl
代码:
curl -v -X POST -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXXXXXXXX" --data '{"client": { "name": "newclient", "color":"c697c0" }}' "https://api.timelyapp.com/1.0/1/clients"
我如何才能更深入地挖掘 requests
以将其调用与 curl
进行比较?
更新:
另外,注意到如果我不指定内容类型:
r = oauth.post("https://api.timelyapp.com/1.0/1/clients",
data={"client":{"name":"newclient", "color":"c697c0" }},
allow_redirects=True)
我得到的是重定向到网站主页的 302,我从中获取页面内容。在任何情况下都不会添加新客户端。
您可能想试试这个:
data=json.dumps(payload)
来自 python-requests
doc:
There are many times that you want to send data that is not
form-encoded. If you pass in a string instead of a dict, that data
will be posted directly.
我正在使用 requests
和 requests_oauthlib
与 API 交互。
我成功验证并访问了 API 的所有 GET
方法,但使用 POST
方法时出现错误 500。例如:
r = oauth.post("https://api.timelyapp.com/1.0/1/clients",
data={"client":{"name":"newclient", "color":"c697c0" }},
allow_redirects=False, headers={"Content-Type": "application/json"})
问题是我用 curl
测试了相同的调用并且它工作正常,这里是 curl
代码:
curl -v -X POST -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXXXXXXXX" --data '{"client": { "name": "newclient", "color":"c697c0" }}' "https://api.timelyapp.com/1.0/1/clients"
我如何才能更深入地挖掘 requests
以将其调用与 curl
进行比较?
更新:
另外,注意到如果我不指定内容类型:
r = oauth.post("https://api.timelyapp.com/1.0/1/clients",
data={"client":{"name":"newclient", "color":"c697c0" }},
allow_redirects=True)
我得到的是重定向到网站主页的 302,我从中获取页面内容。在任何情况下都不会添加新客户端。
您可能想试试这个:
data=json.dumps(payload)
来自 python-requests
doc:
There are many times that you want to send data that is not form-encoded. If you pass in a string instead of a dict, that data will be posted directly.