首页 > 解决方案 > Python API 错误 - 'faultstring': 'JSONThreatProtection

问题描述

第一次尝试通过 API 提取数据。我对如何传递原始数据感到困惑。我已经能够让它在邮递员中工作,但我无法用 Python 搞清楚。

我一直收到这个错误: {'fault': {'faultstring': 'JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting { or [ at line 1', 'detail': {'errorcode': 'steps.jsonthreatprotection.ExecutionFailed'}}}

我很确定它的数据部分是错误的,但我无法弄清楚它是否只是语法错误或我遗漏的更大的东西。

我的代码如下:

import requests
import json

url = "https://url/customers/shipmentstatus"

headers = {
    "Authorization": "Bearer TOKEN",
    "Content-Type": "application/json"
  }

data = {
    "Id": [
    "AZ1234"
  ]
}

response = requests.post(url, headers=headers, data=data)

print(response.json())

标签: pythonapi

解决方案


您的代码将数据发布为表单编码数据,而不是 JSON。那是因为您使用data参数来提供有效负载。要修复,请使用以下命令将数据编码为 JSON json.dumps()

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

但更好的方法是使用参数将数据传递给请求json

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

使用该json参数更容易,它还会Content-Type: application/json为您添加标题。


推荐阅读