c# - eBay Trading API 需要 GetOrders 方法所需的参数,但要处理,有些需要无价值。空,不接受
问题描述
我正在使用安装了 eBay NuGet 包的 eBay 交易 API、Visual Studio、C#,它为我创建了 eBay 对象和方法。GetOrders(...) 方法的定义是:~
public OrderTypeCollection GetOrders(StringCollection OrderIDList, DateTime CreateTimeFrom, DateTime CreateTimeTo, TradingRoleCodeType OrderRole, OrderStatusCodeType OrderStatus, ListingTypeCodeType ListingType, PaginationType Pagination, DateTime ModTimeFrom, DateTime ModTimeTo, int NumberOfDays, bool IncludeFinalValueFee, SortOrderCodeType SortingOrder);
几乎所有这些参数都是必需的,不接受 null。有些会接受空白变量。所以我有这段代码来调用该方法:
var roletype = TradingRoleCodeType.Seller;
var orderstatuscode = OrderStatusCodeType.All;
var pagination = new PaginationType();
pagination.EntriesPerPage = itemsPerPage;
pagination.PageNumber = pageNumber;
int noOfDays = new int();
DateTime blankDate = new DateTime(); // Not blank, but 01/01/0001 12:00:00 AM
orders = apicall.GetOrders(null, fromDate, toDate, roletype, orderstatuscode, new ListingTypeCodeType(), pagination, blankDate, blankDate, noOfDays, false, SortOrderCodeType.Ascending);
此代码将运行,但返回错误“不提供 CreateTimeFrom/To 以及 ModTimeFrom/To,只提供一个或另一个”如果我编写自己的 API 调用,我可以省略不需要的参数,但是通过使用 eBay Nuget 包构建的方法,我被迫提交参数。对我来说,使用这种方法似乎是不可能的,因为它需要两组日期才能提交,但如果提交两组日期,就会被服务器拒绝。
我对 C# 还很陌生,所以我可能缺少一些简单的东西。该方法有 3 个重载,但没有一个接受所需的参数集。
解决方案
我需要选择一个更简单的 GetOrders 溢出,参数更少。然后将可选参数输入父对象。例如:
var orderstatuscode = OrderStatusCodeType.All;
var pagination = new PaginationType();
pagination.EntriesPerPage = itemsPerPage;
pagination.PageNumber = pageNumber;
apicall.Pagination = pagination;
orders.AddRange(apicall.GetOrders(fromDate, toDate, roletype , orderstatuscode));
-- 编辑 -- 在对代码做更多的工作之后,我发现了一种更灵活的方法来支持自定义参数选择。
while (hasOrders)
{
Console.WriteLine("Getting page {0}.... ", pagination.PageNumber);
apicall.Pagination = pagination;
apicall.ModTimeFrom = fromDate;
apicall.ModTimeTo = toDate;
apicall.OrderRole = TradingRoleCodeType.Seller;
apicall.OrderStatus = OrderStatusCodeType.All; ;
apicall.Execute();
orders.AddRange(apicall.ApiResponse.OrderArray);
//orders.AddRange(apicall.GetOrders(fromDate,toDate, roletype, orderstatuscode)); // No overflow will support modified date.
hasOrders = apicall.HasMoreOrders;
pagination.PageNumber++;
}
推荐阅读
- python - 如何通过 Selenium-Python 访问“rect”类型的元素
- javascript - 删除所有非字母数字和多个空格
- javascript - 如何获取特定年份之间的 json 数据?
- hyperledger-fabric - 为什么deliverBlocks 因策略评估错误而失败?
- java - JWT - 浏览器的标头中未添加授权
- javascript - 如何将以前的结果存储到var中
- sql-server - 如何在 CASE 语句中使用多个条件
- spring - 两个实体之间存在多对多关系的搜索过滤器的实施建议
- jquery - 单击时显示同级
- bash - 如何提交正确的错误代码来陷阱