Maison >développement back-end >tutoriel php >Comment récupérer des valeurs POST avec le type de contenu « application/json » en PHP ?
Lecture de JSON POST à l'aide de PHP
Dans cette enquête, l'utilisateur rencontre des difficultés pour extraire les valeurs POST et renvoyer un tableau encodé en JSON à partir d'un service Web après la transition vers l'utilisation d'un type de contenu basé sur JSON. La question suivante s'est posée :
Question :
Quelle est la méthode appropriée pour récupérer les valeurs POST lorsque le type de contenu est application/json ?
Réponse :
Les superglobales PHP traditionnelles telles que $_POST ne contiendront pas le message souhaité données lorsque le type de contenu est application/json. Pour accéder aux données POST brutes, il est nécessaire de lire à partir d'une source différente.
Solution :
Utilisez la fonction file_get_contents() de PHP pour récupérer l'entrée POST brute et puis analysez-le en utilisant json_decode(). Cette approche permet d'accéder aux données dans un tableau associatif.
Considération supplémentaire :
Le code de test de l'utilisateur nécessite également une modification. CURLOPT_POSTFIELDS doit être utilisé pour définir le corps de la requête sous forme de chaîne JSON, plutôt que d'essayer de l'encoder en tant que application/x-www-form-urlencoded.
Code PHP mis à jour pour les tests :
$data_string = json_encode($data); $curl = curl_init('http://webservice.local/'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($curl); $result = json_decode($result); var_dump($result);
Code PHP mis à jour pour le Web Service :
header('Content-type: application/json'); // Remove duplicate line // header('Content-type: application/json'); // Remaining code...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!