2012-10-10 73 views
0

我目前有一個返回JSON的API腳本。它一直在努力,直到我試圖在它之前添加一個curl php POST腳本。 curl腳本正在處理它自己,並且它也在API腳本中工作。但是JSON代碼沒有被返回。CURL PHP POST干擾JSON

下面的方法是否存在根本性錯誤?

在此先感謝。

編輯:curl腳本100%自行工作。 說的腳本也在裏面工作,只是JSON不返回。

$name = "foo"; 
$age = "bar"; 

//set POST variables 
$url = 'https://www.example.com'; 

$fields = array(
      'name' => urlencode($name), 
      'age' => urlencode($age) 
     ); 

//url-ify the data for the POST 
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
rtrim($fields_string, '&'); 

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_POST, count($fields)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch);  
return json_encode(
    array(
     "status" => 1, 
     "message" => "Success!", 
     "request" => 10 
    ) 
); 
+1

_「但是沒有被返回的JSON代碼。 「_ - 然後啓用錯誤報告,因爲當沒有調用'return'時,您的代碼在此之前明顯失敗。 – CodeCaster

+0

也許你想「回聲」JSON呢? –

+0

它在foreach點失敗,但curl腳本起作用。這些值已成功發佈 –

回答

2

你需要做以下使用echo,還可以使用CURLOPT_RETURNTRANSFER如果不是輸出將被直接傳送到頁面,而不是$result

$name = "foo"; 
$age = "bar"; 
$url = 'http://.../a.php'; 
$fields = array('name' => urlencode($name),'age' => urlencode($age)); 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
$result = curl_exec($ch); 
curl_close($ch); 

header('Content-type: application/json'); 
echo json_encode(array("status" => 1,"message" => "Success!","request" => 10)); 
+0

謝謝@Baba,這解決了JSON不被返回的問題。但是,捲曲POST已停止工作。有任何想法嗎?即'foreach($ fields爲$ key => $ value){$ fields_string。= $ key。'='。$ value。'&'; } rtrim($ fields_string,'&');'需要嗎?謝謝 –

+0

你不需要'CURLOPT_POSTFIELDS'接受數組tooo – Baba

+0

我已經測試過它自己的curl腳本,它不會按照我的要求。只能採用'HTTP POST',難道這就是問題嗎? –