我已经设置了一个 API 密钥,并编写了 PHP 服务器端代码来获取基于 URL 的 Google 安全浏览 [GSB] 状态。此处描述了 GSB 查找 API 的第 4 版 -> https://developers.google.com/safe-browsing/v4/lookup-api#http-post-request。我在服务器上的命令行中使用 PHP-cURL 库和 PHP 7 作为测试。我发送的 POST 内容来自 Google 开发者网站上的示例,尽管我已将其剪切为仅一个 URL 并从版本号和 URL 中删除了句点(是的,我知道 URL 会失败),因为它们似乎产生了自己的奇怪错误:
{"client":{"clientId":"yourcompanyname","clientVersion":"152"},"threatInfo":{"threatTypes":["MALWARE","SOCIAL_ENGINEERING"],"platformTypes":["WINDOWS","threatEntryTypes":["URL"],"threatEntries":[{"url":"wwwurltocheck1org/"}]}}
我从 php-curl 得到一个 400 HTTP 状态返回并且这个错误:
"message": "Invalid JSON payload received. Unknown name \"{\"client\":{\"clientId\":\"yourcompanyname\",\"clientVersion\":\"152\"},\"threatInfo\":{\"threatTypes\":[\"MALWARE\",\"SOCIAL_ENGINEERING\"],\"platformTypes\":[\"WINDOWS\",\"threatEntryTypes\":[\"URL\"],\"threatEntries\":[{\"url\":\"wwwurltocheck1org/\"}]}}\": Cannot bind query parameter. Field '{\"client\":{\"clientId\":\"yourcompanyname\",\"clientVersion\":\"152\"},\"threatInfo\":{\"threatTypes\":[\"MALWARE\",\"SOCIAL_ENGINEERING\"],\"platformTypes\":[\"WINDOWS\",\"threatEntryTypes\":[\"URL\"],\"threatEntries\":[{\"url\":\"wwwurltocheck1org/\"}]}}' could not be found in request message.",
我会指出它说的是“未知名称”,然后引用我的整个 POST 内容,就好像整个 POST 内容被解释为单个“名称”一样。但随后它说“无法绑定查询参数”并(再次)引用整个 POST 内容,就好像它认为它是一个单独的字段一样。在这种情况下,什么是“领域”?这让我很难过。
是的,我正在添加 application/json 标头:
[Content-Type] => application/json
在以下位置点击 GSB API:
[url] => https://safebrowsing.googleapis.com/v4/threatMatches:find?key=MY_KEY
php-curl 告诉我它从 GSB 服务收到了 JSON:
[content_type] => application/json; charset=UTF-8
有谁知道这些消息是什么意思?“无效的 JSON 有效负载...”和“无法绑定查询参数”。- 我根本无法与他们联系。