我知道SOF有很多類似的問題,但我沒有在他們身上找到對我有用的東西。按照谷歌自定義搜索文檔,&start
參數:如何顯示谷歌自定義搜索結果的下一頁?
The start parameter uses a zero-based index, meaning the first result is 0, the second result is 1 and so forth.
The start parameter works in conjunction with the num parameter to determine which search results to return.
我試着從零發送,但應用程序崩潰。在這種嘗試我試圖發送:
1頁:&num=10&start=1
2頁:&num=10&start=11
,但它仍然要求1頁。 &start
參數總是被忽略
我寫一個Android應用程序,它不會像搜索,上向下滾動應該dislpays下一頁(未來10張),在android系統,它總是返回1頁有10幅圖像,我測試要求在瀏覽器中,加上&num
參數,它的工作原理。在Android上,似乎在第一次加載頁面後,忽略參數&start
和&num
。
我與改造結合使用robospice,我想不出get request串怎麼看,也許我做錯了什麼
這裏是我的接口:
public static final String BASE_URL = "https://www.googleapis.com/customsearch";
public static final String API_KEY = "AIzaSyCCuxxVLzm2sZP-adhRNYKeSck1mMMgsAM";
public static final String CUSTOM_SEARCH_ID = "001734592082236324715:sob9rqk49yg";
public static final String SEARCH_TYPE_IMAGE = "image";
static final String FILTER = "&fields=queries(nextPage(startIndex,count),request(startIndex,count)),searchInformation(totalResults),items(title,link,displayLink,mime," +
"image)";
static final String QUERY = "/v1?key="+API_KEY+
"&cx="+CUSTOM_SEARCH_ID+
"&searchType="+SEARCH_TYPE_IMAGE+FILTER+"&num=10";
@GET(QUERY)
public GoogleSearchResponse search(@Query("q") String query,
@Query("start") long startIndex);
SpiceRequest
public class SampleRetrofitSpiceRequest extends RetrofitSpiceRequest<GoogleSearchResponse,GoogleSearchInterface> {
String query;
long startIndex;
public SampleRetrofitSpiceRequest(String query, long startIndex) {
super(GoogleSearchResponse.class, GoogleSearchInterface.class);
this.query = query;
this.startIndex = startIndex;
}
@Override
public GoogleSearchResponse loadDataFromNetwork() throws Exception {
return getService().search(query,startIndex);
}}
SpiceService
public class SampleRetrofitSpiceService extends RetrofitGsonSpiceService {
@Override
public void onCreate() {
super.onCreate();
addRetrofitInterface(GoogleSearchInterface.class);
}
@Override
protected String getServerUrl() {
return GoogleSearchInterface.BASE_URL;
}}
現在我怎麼生要求拿到第一結果頁面,在頁面的參數我送1,在獲得第二頁我送11:
public void sendRequest(String query,int page){
searchQuery = query;
request = new SampleRetrofitSpiceRequest(query, page);
spiceManager.execute(request, query, DurationInMillis.ONE_WEEK, new RequestImageListener());
request=null;
}
這裏是響應監聽器,下一頁是一個號的下一個頁面:
private class RequestImageListener implements RequestListener<GoogleSearchResponse> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Toast.makeText(context, "failure", Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestSuccess(GoogleSearchResponse s) {
Toast.makeText(context,"success",Toast.LENGTH_SHORT).show();
nextPage = s.queries.getNextPage().startIndex;
Log.d("myTag","nextPage "+currentPage);
updateSearchResults(s.items);
}
}
UPDATE日誌顯示自定義SpiceRequest
不會提出新的請求,即使我創建新的實例。
你發現瞭如何做到這一點?答案有幫助嗎? – Nobody