2011-02-15 47 views
0

希望有一個簡單的問題,我嘗試使用PHP和cURL連接到我的第一個REST API。我的代碼如下:準確(cURL/PHP)API響應 - 使用的HTTP方法無效

<?php 
$zooplaKey = "mykey"; 
$postcode = $_GET['postcode']; 

$sendData = array('api_key' => $zooplaKey, 
        'postcode' => $postcode, 
        'output_type' => "postcode"); 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_URL, 'http://api.zoopla.co.uk/api/v1/average_area_sold_price.js'); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $sendData); 
//curl_setopt($curl, CURLOPT_POST, true); 
//curl_setopt($curl, CURLOPT_HTTPGET, true); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
$raw_json = curl_exec($curl); 
curl_close($curl); 

$zooplaInfo = json_decode($raw_json, true); 

echo "<pre>"; 
print_r($zooplaInfo); 
echo "</pre>"; 
?> 

運行如上我得到的返回:

陣列

[error_string還] =>無效的HTTP方法中使用
[ERROR_CODE] = > 2

//curl_setopt($curl, CURLOPT_POST, true);取消註釋或//curl_setopt($curl, CURLOPT_HTTPGET, true);只是返回一個空白屏幕。

通過下面的網址,我能得到有效的結果(很明顯,我不得不空白的API密鑰,以便該鏈接僅用於結構目的)http://api.zoopla.co.uk/api/v1/average_area_sold_price.xml?api_key=mykey&postcode=ws12dn&output_type=postcode

感謝所有。

回答

2

按照Zoopla API Documentation,你正在嘗試做的是:

檢索的平均銷售價格爲房屋的特定區域。

檢索是在REST標準中使用GET方法完成的。通過使用CURLOPT_POSTFIELDS,cURL會自動將您的請求轉換爲POST,這對檢索無效。您應該刪除後場的一部分,這樣做,而不是:

curl_setopt($curl, CURLOPT_URL, 'http://full/url?'.http_build_query($sendData)); 
+0

謝謝,其他的事情我曾跟隨我只看到POSTFIELDS,就像現在的魅力! – lethalMango

0

URL中的參數將作爲GET傳遞。我會嘗試追加參數到CURLOPT_URL,而不是將它們放在CURLOPT_POSTFIELDS數組中。遠程服務可能要求值位於查詢字符串中,而不是發佈。