2016-04-21 2 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); 
     } 
Смежные вопросы