2012-12-27 28 views
6

店舗の場所に関する情報を収集しています。 検索は次のとおりです。私は問題なくJSONを返すGoogle Places API:next_page_tokenエラー

<?php 
... 
$url='https://maps.googleapis.com/maps/api/place/search/json?key=[my_key]&location=40.420989,-3.706812&radius=1000030&=&sensor=false'; 
$body=file_get_contents($url); 
... 
?> 

、および結果の別のページがあることを示しています。 私はエラーに

「ステータス」を取得する2番目の呼び出しでそれを実行した場合

<?php 
... 
$url2='https://maps.googleapis.com/maps/api/place/search/json?key=[my_key]&pagetoken=ClREAAAAQXKNHPVGCkTC_MdjSqi2T0KBDMWjEu4KF1Ylw1761Po-67AnNSp4zw0wXD4oocGpx4olSl4k2LyklJBl3mBF4VPmxp3IoOCHDRlXVmivaDsSEBuG_V1GvCH1gS5s0LCuy3EaFNXxUzzHhZ5ZRYNfeGHuqewR6Zk7&sensor=false'; 
$body=file_get_contents($url2); 
... 
?> 

を次のように別の電話をかけるために戻ってくる - INVALID_REQUEST

>しかし、私は貼り付けるとき結果のulr2ブラウザが正しいです。

どうすれば修正できますか?

ありがとうございます。

+0

は、あなたはそれがまた私の要求を返す敬遠しがちな問題を考え出しました拒否されたエラー –

答えて

-2

最初のクエリで2ページ目のトークンが生成されます。 uriに "& pagetoken = tokenvalue"を追加するだけです。

確かに動作します。代替オプションはありません。

+0

私はそれをしますが、それは実行されません。 – user1932300

+0

彼はすでに自分のURLにpagetokenを追加しており、解決策は後続のリクエストの間に時間の遅れを生じさせており、ここ(https://developers.google.com/places/documentation/search#PlaceSearchPaging)はそれを確認するリンゴの公式ドキュメントです。 –

38

リクエスト間のタイミングと関係があり、すぐにそれらを実行してもページセットが有効でない場合は、連続するリクエストの間に数秒待たなければなりません。

これは、グーグルの使用条件ですべての結果を一度に取得して一度にすべてのユーザーに返すことができないためです。より多くの結果を求めるユーザアクションが必要です。これにより数秒の遅延が追加されます。

+0

この回答は正しいと表示されなければなりません。保存された私の日.. – allemattio

+0

@allemattioあなたは正しいですが、この答えは正しいとマークされなければならないので、私の一日も保存されました。 –

+0

これは正解です。要求前に5秒の睡眠を追加し、すべてが世界で良好です! –

5

睡眠は(2)要求間の問題

+0

すごい解決策! –

1

を解決するコードの下に試してみてください次pageTokenのは、Googleのサーバー上で検証する必要があるため、私は、要求間の遅延のために睡眠(2)関数を使用していました。 ループを使用してコードの繰り返しを削除することもできます。

//クエリここ

$query = ""; 

// APIキーここ

$api_key = ""; 

// API呼び出しコード

try { 
     echo $url = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=" . $query . "&location=40.420989,-3.706812&radius=1000030&=&sensor=false&key=" . $api_key; 
     echo "<br>"; 
     $result = file_get_contents($url); 
     $query_results = json_decode($result, true); 
     echo "First set" . "<br>"; 
     print_r($query_results); 
     $next_page_token = $query_results['next_page_token']; 
     unset($query_results); 
     $query_results = array(); 

     sleep(2); 
     echo $url = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=" . $query . "&location=40.420989,-3.706812&radius=1000030&=&sensor=false&key=" . $api_key . "&pagetoken=" . $next_page_token; 
     echo "<br>"; 
     $result = file_get_contents($url); 
     $query_results = json_decode($result, true); 
     echo "Second set" . "<br>"; 
     print_r($query_results); 
     $next_page_token = $query_results['next_page_token']; 
     unset($query_results); 
     $query_results = array(); 

     sleep(2); 
     echo $url = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=" . $query . "&location=40.420989,-3.706812&radius=1000030&=&sensor=false&key=" . $api_key . "&pagetoken=" . $next_page_token; 
     echo "<br>"; 
     $result = file_get_contents($url); 
     $query_results = json_decode($result, true);  
     echo "Third set" . "<br>"; 
     print_r($query_results); 
     unset($query_results); 
     $query_results = array(); 
    } catch (Exception $e) { 
     $e->getCode(); 
     $e->getLine(); 
    }