将基本 CURL 转换为 Python 的请求

Converting a basic CURL to Python's request

以下 curl 工作正常:

curl -d '{"date":"2015-05-27T03:48:29.002Z"}' http://blabla.com

但我无法让它与 requests 一起工作:

payload = {'date' : '2015-05-27T03:48:29.002Z'}
r = requests.get(url, params=payload, headers=h)

我做错了什么?

使用 curl 发布 JSON 数据,而 params 参数设置 URL 查询参数(URL 中 ? 之后的任何内容)。

使用 json 关键字参数和正确的动词(-d 告诉 curl 使用 POST 请求):

payload = {'date' : '2015-05-27T03:48:29.002Z'}
r = requests.post(url, json=payload)

另外,这会将 Content-Type header 设置为 application/json

这应该适用于所有 requests 版本:

payload = {'date' : '2015-05-27T03:48:29.002Z'}
r = requests.post('http://blabla.com', data=json.dumps(payload), headers={'Content-type': 'application/json'})

尝试使用 post 代替 get:

payload = {'date' : '2015-05-27T03:48:29.002Z'}
r = requests.post(url, params=payload, headers=h)