python脚本中post请求时出现空正文错误

2024-09-30 02:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python和请求向API端点发出post请求。 端点需要令牌。我从端点处得到了令牌

向第二个端点验证发出post请求时,会出现错误,指出主体为空

import requests

url = "https://authz.dinero.dk/dineroapi/oauth/token"
payload = 'grant_type=password&username=****&password=****'
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Authorization': 'Basic ****'
}

response = requests.request("POST", url, headers=headers, data = payload)
r =response.json()
token = r['access_token']

url = "https://api.dinero.dk/v1/257403/contacts"
payload = {}
payload["Name"]  = "Test Name"
payload["CountryKey"] = "DK"
payload["IsPerson"] = "true"

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + token
}

response = requests.post(url, headers=headers, data = payload)
print(response.text)

这是我得到的错误:

{"code":42,"message":"Validation Error","validationErrors":{"Body":"The body was empty"},"languageSpecificMessages":[{"property":"message","message":"Der er fejl i de angivne data"},{"property":"Body","message":"The body was empty"}],"errorMessageList":[{"Code":"Body","Message":"The body was empty"}]}

这是从邮递员那里得到的相同代码。它很好用

import requests
url = "https://api.dinero.dk/v1/257403/contacts"
payload = "{\r\n  \"Name\": \"Test Name\",\r\n  \"CountryKey\": \"DK\",\r\n  \"IsPerson\": true\r\n}"
print(payload)
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ****'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))

我希望有人能解释为什么我的代码不起作用


Tags: namehttpstokenurlmessagedataresponsecontent
2条回答

在第二次调用中,您希望json转储负载:

import json

response = requests.post(url, headers=headers, data=json.dumps(payload))

Postman已经将负载序列化为json格式的字符串。您可以对json.dumps()执行相同的操作

请求有一个json=param,您可以使用:

response = requests.post(url, headers=headers, json=payload)

文件here

相关问题 更多 >

    热门问题