Webhookのエンドポイントとして登録されているスクリプトを書いています。すべてのリクエストのヘッダーをサーバーログに書き込んでいるので、正常に登録されたことを知っています。サンプルを次に示します。
_Content-Type: text/xml; charset=UTF-8
User-Agent: Jakarta Commons-HttpClient/3.1
Host: =={obfuscated}==
Content-Length: 1918
_
登録したAPIはJSONオブジェクトをスクリプトにPOSTすることであり、PHPを使用してそのオブジェクトを解析したいと思います。リクエストヘッダーからわかるように、解析されるのを待っている素敵で大きな太ったJSONオブジェクトがあります。簡単そうに見えますが、そうではありません。
最初は_$_POST['json']
_または単に_$_POST
_を使用しようとしましたが、データが配列内にないため、そのようにアクセスする方法が本当にわかりませんでした。
私はfile_get_contents('php://input')
とfopen('php://input', 'r')
を使用してjson_decode()
ありとなしで試してみましたが、運はありません。 http_get_request_body()
を使用することはできません。使用しているサーバーにPECLがなく、それが私の制御不能であるためです。
POSTされたJSONオブジェクトとやり取りする他の方法はありますか?ありがとう!
入力してくれた他の人に感謝します。私はちょうど必要だったことが判明
$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array
json_decode
の2番目のパラメーターは、オブジェクトを配列として返しました。
これが誰かの助けになることを願っています!
次の場合でも動作します。
$inputJSON = file_get_contents('php://input');
引き続き$ _POSTを使用する場合は、データをFormDataとして送信します
var fd = new FormData();
fd.append('key', 'value');
return axios.post('url', fd)