Я все настроил с помощью ключа API и написал PHP-код на стороне сервера для получения статуса безопасного просмотра Google [GSB] на основе URL-адреса. Версия 4 API поиска GSB описана здесь -> 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/"}]}}
Я получаю возврат HTTP-статуса 400 от php-curl и эту ошибку:
"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 интерпретируется как одно «имя». Но затем он говорит «Невозможно связать параметр запроса» и цитирует (снова) содержимое whold POST, как если бы он думал, что это одно поле. Что такое «поле» в этом контексте? Это поставило меня в тупик.
Да, я добавляю заголовок application / json:
[Content-Type] => application/json
Ударяя API GSB в:
[url] => https://safebrowsing.googleapis.com/v4/threatMatches:find?key=MY_KEY
И php-curl сообщает, что получил JSON от службы GSB:
[content_type] => application/json; charset=UTF-8
Кто-нибудь знает, что означают эти сообщения? «Недопустимая полезная нагрузка JSON …» и «Невозможно связать параметр запроса». — Я не могу относиться к ним вообще.
Судя по вашему ответу на ошибку с дополнительным знаком «\», вы кодируете строку json, когда вам это не нужно.
т.е. если у вас есть $json = '{"key":"value"}';
как ваш JSON, похоже, вы также подаете заявку json_encode($json);
к этой строке. Вам не нужно этого делать — вы можете просто использовать строку без кодировки, так как она уже в правильном формате для обработки. Я надеюсь, что это то, что было и полезно!
Похоже, что в вашем JSON, platformTypes
не имеет закрытой квадратной скобки.
Ты имел
"platformTypes":["WINDOWS","threatEntryTypes":....
Там должно быть ‘]’ после "WINDOWS"
,