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
Libérer: 2024-12-23 15:53:15
original
455 Les gens l'ont consulté

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);
Copier après la connexion

Code PHP mis à jour pour le Web Service :

header('Content-type: application/json');

// Remove duplicate line
// header('Content-type: application/json');

// Remaining code...
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal