Maison >développement back-end >tutoriel php >Comment récupérer des valeurs POST avec le type de contenu « application/json » en PHP ?

Comment récupérer des valeurs POST avec le type de contenu « application/json » en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-23 15:53:15406parcourir

How to Retrieve POST Values with `application/json` Content Type in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn