簡體   English   中英

python腳本中發布請求時出現空體錯誤

[英]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= param 您可以使用:

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

文檔在這里

在您的第二次調用中,您希望 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM