Я пытаюсь получить список элементов в папке в API Box.com (и использовать смещение / лимит для подкачки).
Согласно документам , я должен сделать следующее:
curl https://api.box.com/2.0/folders/FOLDER_ID/items?limit=2&offset=0 \
-H "Authorization: Bearer ACCESS_TOKEN"
Что кажется очень простым.И я полагаю, что я следую этим инструкциям к письму, как показано моим кодом ниже:
var boxUrl = "https://api.box.com/2.0/folders/" + folderId + "/items";
var requestParams = new NameValueCollection();
requestParams.Add("limit", "10");
requestParams.Add("offset", "50");
var array = (from key in requestParams.AllKeys
from value in requestParams.GetValues(key)
select string.Format("{0}={1}", key, value))
.ToArray();
var queryString = string.Join("&", array);
var url = boxUrl + "?" + queryString;
WebRequest request = WebRequest.Create(boxEmailUrl);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Authorization", "Bearer " + AccessToken);
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Когда я отлаживаю этот код, значение url
равно:
https://api.box.com/2.0/folders/347534773457/items?limit=10&offset=50
И это кажется абсолютно правильным.Но ответ, который я получаю, дает мне первые 100 записей вместо записей 50-60.Фактически, метаданные, которые я получаю от этого вызова API, показывают "offset":0, "limit":100
, как будто я вообще не предоставлял никаких параметров limit
или offset
.Вот небольшой фрагмент этого:
{"total_count":101,"entries":[
{"type":"folder","id":"493...
...917","sequence_id":"0","etag":"0","name":"xxxxxxx"}],
"offset":0,"limit":100,"order": [{"by":"type", "direction":"ASC"},{"by":"name","direction":"ASC"}]}
Может ли это быть ошибкой в API Box.com?Или я что-то не так делаю в своем вызове API?