[英]Empty body error on post request in python script
我正在嘗試使用 python 和請求向 API 端點發出發布請求。 端點需要一個令牌。 我從端點獲取令牌就好了。
向第二個端點發出發布請求時,驗證錯誤指出正文為空。
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":"驗證錯誤","validationErrors":{"Body":"正文為空"},"languageSpecificMessages":[{"property":"message","message" :"Der er fejl i de angivne data"},{"property":"Body","message":"正文為空"}],"errorMessageList":[{"Code":"Body","Message ":"正文是空的"}]}
這是從郵遞員那里獲取的相同代碼。 它工作正常。
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'))
我希望有人能解釋為什么我的代碼不起作用。
在您的第二次調用中,您希望 json 轉儲有效負載:
import json
response = requests.post(url, headers=headers, data=json.dumps(payload))
Postman 已經將有效負載序列化為 json 格式的字符串。 你可以用json.dumps()
做同樣的json.dumps()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.