私はすべてAPIキーを使用して設定されており、URLに基づいてGoogleセーフブラウジング[GSB]ステータスを取得するためのPHPサーバー側コードを書いています。 GSBルックアップAPIのバージョン4については、こちらをご参照ください。 - >https://developers.google.com/safe-browsing/v4/lookup-api#http-post-request私はテストとして私のサーバー上のコマンドラインからPHP-cURLライブラリとPHP 7を使用しています。私が送信しているPOSTの内容は、Google開発者サイトの例のとおりですが、URLを1つに限定してバージョン番号とURLからピリオドを削除しましたが(はい、URLが失敗することがわかります)自分の奇妙なエラーを生成するように見える:google safe browsing 4.0 APIは400のステータスを返します
{"client":{"clientId":"yourcompanyname","clientVersion":"152"},"threatInfo":{"threatTypes":["MALWARE","SOCIAL_ENGINEERING"],"platformTypes":["WINDOWS","threatEntryTypes":["URL"],"threatEntries":[{"url":"wwwurltocheck1org/"}]}}
私はPHPのカールと、このエラーあちこち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 POSTの内容を(もう一度)引用します。この文脈では "フィールド"とは何ですか?これは私に困ってしまった。でGSBのAPIを叩く
[Content-Type] => application/json
を::
はい、私は、アプリケーション/ JSONヘッダを追加してい
[url] => https://safebrowsing.googleapis.com/v4/threatMatches:find?key=MY_KEY
とPHP-カールが私に語ったことは、GSBサービスから戻ってJSONを受けました:
[content_type] => application/json; charset=UTF-8
誰でもメッセージの意味を知っていますか? "無効なJSONペイロード..."と "クエリパラメータをバインドできません。" - 私はそれらに全く関係がありません。
はい、それでした。 PHPが配列を文字列に変換するようにコードを修正し、正しく処理されました。私は必要のないjson_encode()を持っていました。 – Sky