2016-04-21 39 views
0

我試圖從一個藍色的媒體服務帳戶獲得的所有資產,這是我的代碼:如何獲得的所有資產,從蔚藍的媒體服務帳戶

MediaContract mediaService = MediaService.create(MediaConfiguration.configureWithOAuthAuthentication(
        mediaServiceUri, oAuthUri, AMSAccountName, AMSAccountKey, scope)); 
List<AssetInfo> info = mediaService.list(Asset.list()); 

然而,這只是給了我他們的1000,並且在帳戶中肯定有更多。

在Azure表查詢中,如果使用there are more than 1000 of them,則會使用令牌獲取更多條目。

有誰知道我可以如何獲得所有資產的天藍色媒體服務?

感謝,

回答

1

it is the built-in limit由於性能原因(和REST V2),我相信。我認爲沒有辦法通過一個查詢檢索它們。 然而,這是可能的,但是,to use take and skip 1000乘1000等

但我看到你使用MediaContract類,我無法找到它在.NET庫 - 我想這是Java的?我不能對此發表評論,但我相信這種方法應該與文章(skip/take)中描述的相同。 我找到了PHP implementation,也許會有所幫助。

https://msdn.microsoft.com/library/gg309461.aspx#BKMK_skip

+0

亞歷克斯,非常感謝您的信息。似乎java sdk沒有能力跳過,所以我唯一的選擇是直接查詢平靜的端點? – Kenneth

+0

我相信如此。我再次搜索SDK存儲庫,沒有找到準備好的實現。 –

2

與亞歷克斯的幫助下,我能夠破解的Java SDK一樣this php implementation

這裏是代碼:

 List<AssetInfo> allAssets = new ArrayList<>(); 
     int skip = 0; 
     while (true) { 
      List<AssetInfo> curAssets = mediaService.list(getAllAssetPage(skip)); 
      if (curAssets.size() > 0) { 
       allAssets.addAll(curAssets); 
       if (curAssets.size() == 1000) { 
        System.out.println(String.format("Got %d assets.", allAssets.size())); 
        skip += 1000; 
       } else { 
        break; 
       } 
      } else { 
       break; 
      } 
     } 
     private static DefaultListOperation<AssetInfo> getAllAssetPage(int skip) { 
      return new DefaultListOperation<AssetInfo>("Assets", 
      new GenericType<ListResult<AssetInfo>>() { 
      }).setSkip(skip); 
     }