Python请求库未发送正确的参数

Python请求库未发送正确的参数,python,python-requests,Python,Python Requests,我正在向API发送post请求。API需要原始格式的参数 headers = {"content-type" : "application/json"} url = "http://test.web.com/web_api/CreateHeader" params = {"param1" : "asd", "param2" : "asdd"} r = requests.post(url, data = json.dumps(params), headers = headers, auth = H

我正在向API发送post请求。API需要原始格式的参数

headers = {"content-type" : "application/json"}
url = "http://test.web.com/web_api/CreateHeader"
params = {"param1" : "asd", "param2" : "asdd"}
r = requests.post(url, data = json.dumps(params), headers = headers, auth = HTTPBasicAuth('user', 'pass'))
r.json()
这里post请求返回失败。但是,如果我像这样发送参数:

params ="{\n   \"param1\" : \"asd\", \"param2\" : \"asdd\"\n}"
r = requests.post(url, data = params, headers = headers, auth = HTTPBasicAuth('user', 'pass'))

它成功了。你们知道这里发生了什么吗

根据您的描述,API似乎希望数据是json,所以

r = requests.post(url, json=params, headers=headers)

应该有效。

为什么要以json格式发送数据,只需将其作为字典发送即可。只需执行
data=params
而不是
data=json.dumps(params)
api需要原始格式的数据。我将其作为字典发送,但失败了。谢谢,但不是,这只是我在键入问题时犯的错误。您是否尝试过将数据作为json发送
r=requests.post(url,json=params,headers=headers)
另外,您在请求上放了什么标题?因为我无法访问您的API,我只能猜测。您是否尝试发送不带换行符的“原始”json?将请求发送的精确“json”转储到控制台,并尝试找出差异。可能API需要换行符进行解析…谢谢你的回答。我试过了,但还是不行。