Question Problème de lecture du corps de requête HTTP depuis un POST JSON en PHP


J'écris un script qui est enregistré comme point de terminaison pour un webhook. Je sais que c'est enregistré avec succès parce que j'écris l'en-tête de chaque demande sur les journaux de mon serveur. Voici un exemple:

Content-Type: text/xml; charset=UTF-8
User-Agent: Jakarta Commons-HttpClient/3.1
Host: =={obfuscated}== 
Content-Length: 1918

L'API avec laquelle j'ai enregistré est POST-un objet JSON à mon script, et je voudrais analyser cet objet en utilisant PHP. Comme vous pouvez le voir dans l’en-tête de la requête, il existe un gros objet JSON volumineux qui attend d’être analysé. Cela semble simple, mais cela n'a pas été le cas.

Au début j'ai essayé d'utiliser $_POST['json'] ou juste $_POST mais comme les données ne sont pas dans un tableau, je ne savais pas vraiment comment y accéder comme ça.

J'ai essayé d'utiliser file_get_contents('php://input') et fopen('php://input', 'r') Avec et sans json_decode() mais pas de chance. Je ne peux pas utiliser http_get_request_body() puisque le serveur sur lequel je suis n'a pas de PECL et que je ne contrôle pas.

Existe-t-il d'autres moyens d'interagir avec l'objet JSON POST-ed qui me manque? Merci!


39
2017-08-13 01:07


origine


Réponses:


Merci aux autres pour leur contribution. Il se trouve que j'avais juste besoin

$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array

où le deuxième paramètre dans json_decode a renvoyé l'objet en tant que tableau.

J'espère que ceci aide quelqu'un d'autre!


110
2017-08-16 20:35