为什么curl返回null?

时间:2012-08-31 09:00:37

标签: php curl

我希望通过php脚本获得雅虎的祸患。

我可以从geo.places访问网址'http://query.yahooapis.com/v1/public/yql?q=select *,其中text =“NewYork”& format = json'并获取json文件在我的浏览器中。但是当我使用curl时,它返回null。

这就是代码。

    public function getwoeid(){
        $ch = curl_init();
        $url = 'http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text="'.$this->cityname.'"&format=json';
        //echo $url;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $data=curl_exec($ch) or die($this->returnerror()); 
        curl_close($ch);
        $array = json_decode($data, true);
        return $array;
    }

当我尝试访问'http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text =“上海”& format = json'时,curl工作正常

我无法修复它。

任何建议将不胜感激! 感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用PHP的file_get_contents()。空格必须由urlencode();

编码
$url = 'http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text="'.$this->cityname.'"&format=json';
$data = file_get_contents(urlencode($url));
$array = json_decode($data, true);

答案 1 :(得分:0)

刚从你的代码中得到答案:

  

string'不支持HTTP版本    

     

   '(长度= 210)

PlaceFinder Web服务仅支持HTTP GET方法。不支持其他HTTP方法。

您无法使用CURL,因为curl可用作POST方法。 请在此处阅读:http://developer.yahoo.com/geo/placefinder/guide/requests.html

答案 2 :(得分:0)

你有一个打开的curl_setopt()。它在下面:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ <------