2012-12-27 23 views
6

मैं दुकानों के स्थान पर जानकारी एकत्र कर रहा हूं। खोज है:Google स्थल 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); 
... 
?> 

मैं समस्याओं के बिना एक JSON लौटने के लिए, और यह संकेत करता है परिणामों का एक और पेज नहीं है। मैं अगर मैं दूसरी कॉल मैं एक त्रुटि

'स्थिति' प्राप्त के साथ इसे चलाने वापस के रूप में

<?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

आप hte समस्या पता लगा है यह भी मुझे अनुरोध रिटर्न त्रुटि से इनकार किया –

उत्तर

-2

पहली क्वेरी 2 पेज टोकन उत्पन्न होगा। आप अपने यूरी में बस "& पेजेटोकन = टोकनवाल्यू" जोड़ते हैं।

यकीन है कि यह काम करता है। कोई वैकल्पिक विकल्प नहीं।

+0

मैं इसे करता हूं, लेकिन यह नहीं चलाया जाता है। – user1932300

+0

उन्होंने पहले से ही अपने यूआरएल में पैगेटोकन जोड़ा है और समाधान बाद के अनुरोधों के बीच समय देरी कर रहा है और यहां (https://developers.google.com/places/documentation/search#PlaceSearchPaging) इसे सत्यापित करने के लिए सेब आधिकारिक दस्तावेज़ है। –

38

अनुरोधों के बीच समय के साथ इसका कुछ संबंध है, यदि आप उन्हें तुरंत एक दूसरे के बाद चलाते हैं, तो पैगेटोकन अभी तक वैध नहीं है, आपको लगातार अनुरोधों के बीच कुछ सेकंड प्रतीक्षा करनी है।

ऐसा इसलिए है क्योंकि Google के लाइसेंस शर्तों से आप सभी परिणामों को एक बार में लाने की अनुमति नहीं देते हैं और उन्हें उपयोगकर्ता को एक बार में वापस कर देते हैं। आपके पास अधिक परिणाम मांगने के लिए एक उपयोगकर्ता कार्रवाई होनी चाहिए, जो कुछ सेकंड की देरी जोड़ती है।

+0

यह उत्तर सही के रूप में चिह्नित किया जाना चाहिए .. मेरा दिन बचाया .. – allemattio

+0

@allemattio आप सही हैं इस उत्तर को सही के रूप में चिह्नित किया जाना चाहिए और यह मेरा दिन भी बचाया। –

+0

यह सही उत्तर है - अनुरोध से पहले 5 सेकंड नींद जोड़ा, और सब दुनिया में अच्छी तरह से है! –

5

नींद (2) अनुरोधों के बीच समस्या का समाधान होगा

+0

भयानक समाधान !! –

1

कोड के नीचे करने का प्रयास करें, मैं का इस्तेमाल किया है नींद (2) अनुरोधों के बीच देरी के लिए समारोह, क्योंकि अगले pagetoken गूगल सर्वर पर मान्य किया जाना चाहिए। आप कोड पुनरावृत्ति को हटाने के लिए लूपिंग का भी उपयोग कर सकते हैं।

// यहां आपकी क्वेरी

$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(); 
    } 
संबंधित मुद्दे