2013-02-14 5 views
0

J'essaie de publier des données JSON en PHP sur mon serveur local. J'ai le code suivant ci-dessous, mais ça ne marche pas. Est-ce que j'ai manqué une chose vitale?Publication de JSON en utilisant PHP Curl

$url = 'http://localhost/mmcv/chart1.php'; 

    //open connection 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL,$url);   
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);                 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
    curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/json')); 


    $result = curl_exec($ch); 
+0

Avez-vous activé boucle d'abord dans votre serveur? –

+0

vérifier si curl est activé ou non en utilisant ce code dans votre serveur if (! Function_exists ('curl_init')) { throw new Exception ('L'extension PHP cURL n'est pas présente.'); } –

+0

@Venkat Je ne suis pas tout à fait sûr si j'ai. J'ai utilisé curl pour récupérer des données d'une API auparavant, est-ce que cela signifie que je devrais l'activer de mon côté? – AndroidEnthusiast

Répondre

1

Votre problème est peut-être dans le script de réception. Effectuez les opérations suivantes dans « mmcv/chart1.php »:

$rawInput = file_get_contents('php://input'); 

if(is_string($rawInput)) { 
    if(!is_null($jsonInput = json_decode($rawInput, true))) 
     $_POST = $jsonInput; 
} 
+0

merci cela a certainement aidé! c'était un problème avec une ligne dans mon code – AndroidEnthusiast

1
curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/json')); 

même si vous envoyez des messages JSON que vous avez encore à envoyer des données sous forme codée URL afin d'envoyer comme

curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/x-www-form-urlencoded')); 

et utiliser

curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

au lieu de

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);