使用Podio API获取.Net的所有Podio项目集合

时间:2016-12-12 10:40:53

标签: podio

我正在使用Podio提供的.Net API。默认情况下,每个请求只能获取20个项目。如果我们将过滤器限制设置为500(这是podio的最大值),我可以为所有项目获取500个项目。但在这里,我面临着如何迭代这些项目集合的问题 0到500 501至1000 1001等等...... 我正在获得podio项目的总数 以下是我的代码

            int totalItemCount = 1750; //For this example
            int totIterations = totalItemCount / 500;
            int offsetValue = 0;
            for (int i = 0; i < totIterations + 1; i++)
            {
                filterOption.Limit = 500;
                filterOption.Offset = offsetValue;
                filterOption.Remember = true;
                filteredContent = await _Podio.ItemService.FilterItems(appId, filterOption);
                //Some Code here
                offsetValue += 500;
            }

每次迭代时都会获取相同的项目。 预计在500之后应该从501开始到下500个项目...... 任何人都可以提供帮助,因为.Net podio API的文档非常有限

2 个答案:

答案 0 :(得分:1)

请尝试这样的事情:

int limit = 1;
int offset = 500;
var items_1 = client.ItemService.FilterItems(appId, limit, offset);
var items_2 = client.ItemService.FilterItems(appId, limit, offset + 1);

并确认items_1items_2实际上是不同的项目。

FilterItems方法的来源位于:https://github.com/podio/podio-dotnet/blob/master/Source/Podio%20.NET/Services/ItemService.cs#L280

答案 1 :(得分:0)

如果您尝试获取所有项目,请执行以下操作:

int limit = 500;
int offset = 0;
bool continueOperation = true;
var allItems = new List<Item>();

do{
    PodioCollection<Item> filteredItems = await _podioClient.ItemService.FilterItems(appId, limit, offset);
    offset = offset + limit;
    allItems.AddRange(filteredItems.Items);

    if (filteredItems == null || filteredItems.Filtered <= offset)
    {
        continueOperation = false;
    }
} while (continueOperation);