2015-07-03 65 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。这工作正常。但我想遍历一个循环中的所有对象并做一些其他处理。这是它失败的地方。 –