2014-09-10 55 views
0

我正在使用Google針對Ruby自定義搜索引擎的API。這是我設置的API調用Google::APIClient.new後:google api ruby​​客戶端next_page_token和next_page方法不起作用

response = client.execute(
     :api_method => search.cse.list, 
     :application_name => 'my_app', 
     :application_version => '0.1', 
     :parameters => { 
      'q' => thekey, 
      'num' => 4, 
      'start' => 1, 
      'key' => 'MYKEY', 
      'cx' => 'MYCX' 
     } 
    ) 

請求走了,但我不能達到下一個頁面的結果。如果我運行client.execute(response.next_page)獲取第一個API調用的相同數據。

response.next_page 

返回此:

IRB(主):015:0> response.next_page =># 「ORDINE DEI geometri」, 「NUM」=> 4, 「開始」=> 1,「key」=>「MYKEY」,「cx」=>「MYCX」,「pageToken」=>無},@headers = {「User-Agent」=>「google-api-ruby-client/0.7。 1 Mac OS X/10.9.4 \ n(gzip)「,」Accept-Encoding「=>」gzip「,」Content-Type「=>」「},@ api_method =#,@ authenticated = nil,@ authorization =無,@body

您看到start參數i S設定到1即使第一response返回

"queries"=>{"nextPage"=>['start' => 5} 

相反:

response.next_page_token 

是有史以來nil

我試圖搜索(this not working for me),但有關Google API Ruby客戶端的文檔很奇怪。

回答

0

好了,有一天前,我在谷歌的API-紅寶石客戶的GitHub庫打開一個issue,這是最終的答案:

自定義搜索有一個非標準的(與其他谷歌的API )代表下一頁的方式。 next_page預計在響應中找到屬性next_page_token,並將其合併到上一個查詢中。由於該值不存在,它只是重新執行上一個查詢。

對於自定義搜索,您需要通過查看queries中的next_page/previous_page角色來處理此自己。

所以,如果做到這一點,沒有它:)

1

這是我對通過谷歌API調用分頁模板:

page_token = nil 
begin 
    parameters = {} 
    parameters['domain'] = "mydomain.org" 
    if page_token.to_s != '' 
    parameters['pageToken'] = page_token 
    end 

    result = $client.execute(
    :api_method => api.groups.list, 
    :parameters => parameters) 

    if result.status == 200 
    groups = result.data 
    groups_array.concat(groups.groups) 
    page_token = groups.next_page_token 
    else 
    page_token = nil 
    end 
end while page_token.to_s != '' 

在這個例子中,我檢索特定域的所有組。

+0

謝謝@jrq但你的回答不'groups_array.concat(groups.groups)工作'返回我一個錯誤,順便說一句我result.data不要」 t respond_to?(「concat」)。可能是因爲我使用Custom Search Api返回另一種數據。不管怎麼說,還是要謝謝你。 – MonkTools 2014-09-15 19:46:05

+0

我應該更清楚。您需要在我提供的示例中替換您的API調用,參數和結果。但處理分頁結果的結構很好。你應該能夠看到你需要爲每個頁面重新執行。 – JRQ 2014-09-16 12:52:30

+0

是的,我明顯地取代了所有這些東西。在我的prev消息中,我忘了在「與......一起工作」之後寫下「我」,所以這個短語結果很奇怪,對不起。無論如何,我嘗試與您的頁面經銷商結構,但問題是一樣的。 '結果。page_next_token'永遠爲零,'result.page_next'返回'startIndex = 1'的原始請求。奇怪的是'result.data ['queries']'顯示了一個'nextPage'鍵,其中包含爲下一頁進行的正確調用。 – MonkTools 2014-09-16 16:02:21

相關問題