API безопасного просмотра Google 4.0 возвращает 400 статус

Я все настроил с помощью ключа 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 …» и «Невозможно связать параметр запроса». — Я не могу относиться к ним вообще.

0

Решение

Судя по вашему ответу на ошибку с дополнительным знаком «\», вы кодируете строку json, когда вам это не нужно.

т.е. если у вас есть $json = '{"key":"value"}'; как ваш JSON, похоже, вы также подаете заявку json_encode($json); к этой строке. Вам не нужно этого делать — вы можете просто использовать строку без кодировки, так как она уже в правильном формате для обработки. Я надеюсь, что это то, что было и полезно!

0

Другие решения

Похоже, что в вашем JSON, platformTypes не имеет закрытой квадратной скобки.

Ты имел
"platformTypes":["WINDOWS","threatEntryTypes":....
Там должно быть ‘]’ после "WINDOWS",

0

По вопросам рекламы [email protected]