2

我想通过 php 脚本获取 yahoo woeid。

我可以访问 url 'http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where 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;
    }

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

我无法修复它。

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

4

3 回答 3

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);
于 2012-08-31T09:21:19.967 回答
0

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

string '不支持 HTTP 版本

'(长度=210)

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

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

于 2012-08-31T09:14:08.177 回答
0

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

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ <------
于 2012-08-31T09:16:09.083 回答