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
553 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!

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