【问题标题】:How to use Pagination filter in getOrders call (eBay Trading API)? [closed]如何在 getOrders 调用(eBay 交易 API)中使用分页过滤器? [关闭]
【发布时间】:2019-07-11 13:13:19
【问题描述】:
我编写 C# 应用程序,它从 Ebay 获得订单。
问题是我只能从 getOrders.ApiResponse.OrderArray 获得 100 个订单。
我有大约 1000 个订单。如何获得其他900?换句话说,如何使用 HasMoreOrders 调用和 Pagination.PageNumber 来遍历 ebay 订单?
【问题讨论】:
标签:
c#
pagination
ebay-api
【解决方案1】:
在第一个 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
}
【解决方案2】:
响应本身包含当前页码和总页数。您需要为每页执行一个新请求。
看看我为从每个页面获取所有结果而编写的以下代码(这是使用 Finding 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
};
}