Problème de lecture du corps de la requête HTTP à partir d'un POST JSON en PHP
J'écris un script qui est enregistré comme point de terminaison pour un webhook. Je sais qu'il est enregistré avec succès parce que j'écris l'en-tête de chaque requête dans 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 je me suis enregistré affiche un objet JSON dans mon script, et j'aimerais analyser cet objet en utilisant PHP. Comme vous pouvez le voir dans l'en-tête de la requête, il y a un joli gros objet JSON qui attend d'être analysé. Cela semble simple, mais cela ne l'a pas été.
À j'ai d'abord essayé d'utiliser $_POST['json']
ou simplement $_POST
mais comme les données ne sont pas dans un tableau, je n'étais pas vraiment sûr de savoir 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 PECL et c'est hors de mon contrôle.
Existe-t-il d'autres moyens d'interagir avec L'objet JSON POST-ed qui me manque? Merci!
2 réponses
Merci aux autres pour l'entrée. Il s'avère que j'avais juste besoin de
$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array
Où le deuxième paramètre de json_decode
a renvoyé l'objet sous forme de tableau.
J'espère que cela aide quelqu'un d'autre!
Même lorsque les travaux suivants.
$inputJSON = file_get_contents('php://input');
Si vous souhaitez continuer à utiliser $_POST, envoyez les données en tant que FormData
var fd = new FormData();
fd.append('key', 'value');
return axios.post('url', fd)