Я играю со службой оддатов Netflix, чтобы лучше понять, как использовать данные оддата.
В VS 2010 я добавил ссылку на службу для службы данных NetFlix. Затем я написал этот код, который возвращает только некоторые данные.
var cat = new NetflixCatalog(new Uri("http://odata.netflix.com/v1/Catalog/")); var x = from t in cat.Titles where t.ReleaseYear == 2009 select t; foreach (Title title in x) { ProcessTitle(title); }
Я посмотрел на URI, сгенерированный для звонка, и запустил его в браузере. Возвращаемый фид атома имеет этот элемент в конце
<link rel="next" href="http://odata.netflix.com:20000/v1/Catalog/Titles()/?$filter=ReleaseYear%20eq%202009&$orderby=AverageRating%20desc&$skiptoken=3.9D,'BVqRa'" />
Это ссылка, которая будет извлекать следующий набор данных (подкачка осуществляется Netflix). У меня вопрос, как мне получить свой код для доступа к следующей партии данных, следующей и т. Д .?
Запрос может быть приведен к DataServiceQuery, у которого есть метод Execute, который возвращает результаты в виде QueryOperationResponse, у которого есть метод GetContinuation, который возвращает объект продолжения, представляющий следующую ссылку. Примерный код для прохождения всех заголовков может выглядеть так:
var cat = new NetflixCatalog(new Uri("http://odata.netflix.com/v1/Catalog/")); var x = from t in cat.Titles where t.ReleaseYear == 2009 select t; var response = (QueryOperationResponse<Title>)((DataServiceQuery<Title>)x).Execute(); while (true) { foreach (Title title in response) { Console.WriteLine(title.Name); } var continuation = response.GetContinuation(); if (continuation == null) { break; } response = cat.Execute(continuation); }