Maison >développement back-end >tutoriel php >Comment puis-je lire les données JSON POST dans mon service Web PHP ?
Vous avez du mal à lire des données JSON dans un service Web PHP ?
< h3>Le problème
Vous disposer d'un service Web qui fonctionne parfaitement avec des données de formulaire simples. Cependant, lorsque vous devez envoyer des données POST avec un type de contenu application/json, votre service Web ne renvoie aucune valeur. Vous pensez que cela est lié à la façon dont vous gérez les valeurs POST.
Le problème réside dans la manière dont vous accédez aux données POST. Pour les requêtes JSON POST, vous devez utiliser une méthode différente de la variable $_POST standard.
Pour lire les données JSON à partir du POST demande, utilisez le code suivant :
$inputJSON = file_get_contents('php://input'); $input = json_decode($inputJSON, TRUE); // Convert JSON into an array // Use the $input array to access your JSON data
Dans votre requête CURL, vous utilisez CURLOPT_POSTFIELDS pour encoder vos paramètres sous la forme application/x-www-form-urlencoded. Cependant, pour une requête JSON POST, vous devez fournir des données au format JSON.
Modifiez votre code CURL comme suit :
$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) ));
Assurez-vous qu'il n'y a qu'un seul appel à header('Content-type: application/json'); dans la page de votre service Web. S'il y a plusieurs appels, cela peut interférer avec la réponse JSON.
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!