【问题标题】:How to fix the "Invalid JSON payload received. Unknown name" error如何修复“收到的无效 JSON 有效负载。未知名称”错误
【发布时间】:2019-09-15 06:21:03
【问题描述】:

我尝试从 Google 安全浏览 API v4 获得正确响应。虽然我收到错误“收到无效的 JSON 有效负载。未知名称”。

我使用了基于https://developers.google.com/safe-browsing/v4/lookup-api 中提到的有效负载示例的有效负载

我的负载有问题。我认为它应该是一个字符串,而不是一个真正的字典。当我使用 dict 我得到错误: TypeError: has type , but expected one of: str, unicode

我使用的代码是:

result = urlfetch.fetch(url, method=urlfetch.POST, payload=payload)

网址是([api-key]当然是我的api-key):

https://safebrowsing.googleapis.com/v4/threatMatches:find?key=[api-key]

payload 是以下字符串(不是 python 字典):

{
  "client": { 
     "clientId": "myproject", 
     "clientVersion": "42" }, 
  "threatInfo": { 
     "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"], 
     "platformTypes": ["WINDOWS"], 
     "threatEntryTypes": ["URL"], 
     "threatEntries": [ {"url":"http://www.example.com/"} ] } 
}

作为输出,我期望一些 JSON 表明这个 url 是安全的。但是我得到以下结果:

{ 
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"{\n    \"client\": {\n      \"clientId\":      \"myproject\",\n      \"clientVersion\": \"42\"\n    },\n    \"threatInfo\": {\n      \"threatTypes\":      [\"MALWARE\", \"SOCIAL_ENGINEERING\"],\n      \"platformTypes\":    [\"WINDOWS\"],\n      \"threatEntryTypes\": [\"URL\"],\n      \"threatEntries\": [\n        {\"url\":\"http://www.example.com/\"}\n      ]\n    }\n  }\": Cannot bind query parameter. Field '{\n    \"client\": {\n      \"clientId\":      \"myproject\",\n      \"clientVersion\": \"42\"\n    },\n    \"threatInfo\": {\n      \"threatTypes\":      [\"MALWARE\", \"SOCIAL_ENGINEERING\"],\n      \"platformTypes\":    [\"WINDOWS\"],\n      \"threatEntryTypes\": [\"URL\"],\n      \"threatEntries\": [\n        {\"url\":\"http://www' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": [similar as the message above]
          }
        ]
      }
    ]
  }
}

任何想法,有什么问题?

谢谢

【问题讨论】:

  • 尝试从 json 中删除换行符
  • 嗨本杰明,感谢您的建议。然而它并没有帮助。

标签: google-app-engine safe-browsing-api


【解决方案1】:

urlfetch 应该包含 HEADER Content-Type: application/json

result = urlfetch.fetch(url, method=urlfetch.POST, payload=payload, headers={'Content-Type': 'application/json'})

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多