如何在getOrders调用(eBay Trading API)中使用分页过滤器

本文关键字:过滤器 分页 API Trading getOrders 调用 eBay | 更新日期: 2023-09-27 18:01:41

我写c#应用程序,它从Ebay获取订单。

问题是我只能从getOrders.ApiResponse.OrderArray中获得100个订单。

我有大约1000个订单。怎么得到另外900?换句话说,如何通过使用HasMoreOrders调用和Pagination.PageNumber来迭代ebay订单?

如何在getOrders调用(eBay Trading API)中使用分页过滤器

在第一个GetOrders调用本身中,您可以在结果

中找到项目和页面的总数

你应该遍历每一页&调用不同页码的GetOrders API调用

For(int index=0; index<Orders.Pages; index++)
{
// Build GetOrders Request with PageNumber - index
// Call GetOrders API with page number 
// Manipulate result
}

响应本身包含当前页码和总页数。您将需要为每个页面做一个新的请求。

看一下下面我写的代码,从每个页面获得所有结果(这是与查找API,但对所有其他eBay API工作相同):

var response = GetResults(findingService, request, currentPageNumber);
if (response.ack == AckValue.Success)
{
    var result = response.searchResult;
    if (result != null && result.count > 0)
    {
        // TODO process result
        for (var i = response.paginationOutput.pageNumber; i < response.paginationOutput.totalPages; i++)
        {
            currentPageNumber += 1;
            response = GetResults(findingService, request, currentPageNumber);
            result = response.searchResult;
            // TODO process result
        }
    }
}
private FindCompletedItemsResponse GetResults(CustomFindingService service, FindCompletedItemsRequest request, int currentPageNumber)
{
    request.paginationInput = GetNextPage(currentPageNumber);
    return service.findCompletedItems(request);
}
private PageinationInput GetNextPage(int pageNumber)
{
    return new PaginationInput
    {
        entriesPerPageSpecified = true,
        entriesPerPage = 100,
        pageNumberSpecified = true,
        pageNumber = pageNumber  
    };
}