2015-07-03 69 views
1

我正在編寫調用Web服務的Java客戶端代碼。當我打電話給我的客戶的網絡服務之一,其接受輸入參數如下圖所示:Java與分頁

KalturaFilterPager pager = new KalturaFilterPager(); 
    pager.pageIndex = 1; 
    pager.pageSize = 50; 

所以,如果我有430條記錄,我需要改變輸入參數,每次喜歡的PageIndex = 2頁面尺寸= 50像這樣獲取所有記錄。

現在我的要求是我想檢索我的所有記錄在一個頁面。如何在不指定pageSize = 431的情況下執行此操作,因爲此記錄號可能在將來發生更改。

我的代碼是:

private static String getMediaMetadata() throws KalturaApiException, 
     IOException, ParserConfigurationException, SAXException { 
    getKalturaClient(); 
    String country = null; 
    KalturaMediaService mediaService = client.getMediaService(); 
    System.out.println("Got the mediaservice" + mediaService); 
    KalturaMediaEntryFilter filter = new KalturaMediaEntryFilter(); 
    KalturaFilterPager pager = new KalturaFilterPager(); 
    pager.pageIndex = 1; 
    pager.pageSize = 50; 
    KalturaMediaListResponse mediaResponse = mediaService.list(filter, 
      pager); 
    if (mediaResponse.totalCount > 0) { 
     System.out.println("mediaResponse.totalCount" 
       + mediaResponse.totalCount); 
     // pager.pageSize = mediaResponse.objects; 
     List<KalturaMediaEntry> mediaEntriesList = mediaResponse.objects; 
     if (mediaEntriesList != null && mediaEntriesList.size() > 0) { 
      for (int i = 0; i < mediaEntriesList.size(); i++) { 
       System.out.println("mediaEntriesList.size()-------->" 
         + mediaEntriesList.size()); 
       KalturaMediaEntry media = mediaEntriesList.get(i); 
       if (media != null) { 
        System.out.println("Media ID -------->" + media.id); 
        KalturaMetadataListResponse metadataResp = getMetadata(media.id); 
        if (metadataResp != null && metadataResp.totalCount > 0) { 
         System.out.println("Got the metadataResp" 
           + metadataResp.totalCount); 
         List<KalturaMetadata> metadataObjs = metadataResp.objects; 
         if (metadataObjs != null && metadataObjs.size() > 0) { 
          System.out.println("got the metadaobjs"); 
          for (int j = 0; j < metadataObjs.size(); j++) { 
           KalturaMetadata metadata = metadataObjs 
             .get(j); 
           if (metadata != null) { 
            System.out 
              .println("metadata not null --------->" 
                + metadata); 
            String xml = metadata.xml; 
            if (xml != null) { 
             System.out 
               .println("xml not null --------->" 
                 + xml); 
             country = parseXml(xml); 
             if (country != null) { 
              System.out 
                .println("Country Value --------->" 
                  + country); 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
    return country; 
} 
+1

閱讀該Web服務的文檔 –

回答

0

有沒有什麼辦法讓真正去記錄之前的記錄總數?有這樣的API嗎?如果是這樣,請先調用該值作爲頁面大小。

+0

我有相同的方法,它不接受任何參數並返回總計數。我調用了這個方法,然後獲取該值並設置到分頁器對象並再次調用該方法:pager.pageSize = mediaResponse.objects.size(); \t \t \t pager.pageIndex = 1; \t \t \t KalturaMediaListResponse resp = mediaService.list(filter,pager);但仍然在for循環中顯示30條記錄,其中只有默認頁面記錄大小。 –

+0

某些API爲pageSize定義了最大大小。試着找出你的情況的最大值。爲什麼不嘗試像75,100,125,150,200等頁面大小來找出它是否會產生差異? – Alp

+0

謝謝你的回覆。這沒有任何最大大小來設置和檢索。我曾嘗試將pageSize設置爲50,將1,2,3,4,5等設置爲pageIndex。這工作正常。但我想遍歷一個循環中的所有對象並做一些其他處理。這是它失敗的地方。 –