2013-02-14 66 views
0

我想在本地服务器上发布PHP中的一些JSON数据。我在下面的代码,但它不起作用。我错过了一件重要的事情吗?发布使用PHP的JSON 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

您是否首先在服务器中启用curl? – 2013-02-14 14:15:28

+0

如果(!function_exists('curl_init'))抛出新的异常('PHP cURL扩展不存在'),请检查curl是否已启用或未在您的服务器中使用此代码。 } – 2013-02-14 14:17:34

+0

@Venkat我不太确定,如果我有。我以前使用curl从API获取数据,这是否意味着我必须在我的末端启用它? – AndroidEnthusiast 2013-02-14 14:18:39

回答

1

也许你的问题在接收脚本中。 请在“mmcv/chart1.php”中尝试以下操作:

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

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

谢谢这绝对有帮助!这是我的代码中的一行问题 – AndroidEnthusiast 2013-02-14 15:06:46

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

即使你张贴JSON你还是要在URL编码的形式发送数据,以便把它像

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

,并使用

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

代替

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