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;
    }

「http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text="上海"&format=json」にアクセスしようとすると、カールは正常に動作します。

私はそれを修正することはできません。

任意の提案をいただければ幸いです! ありがとう。

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 は POST メソッドとして機能するため、CURL は使用できません。こちらをお読みください: 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 に答える