有更好的陷阱Xero API错误的方法吗?

时间:2019-08-22 11:56:04

标签: vb.net xero-api

我正在vb.net 2013 Express中编写一些代码,以通过私有应用程序访问Xero记帐,并且运行良好。但是,在尝试编写一些代码以从单个XML文件上载多个联系人时遇到了一个问题。我解析XML,从每一行创建一个新联系人,并将其添加到联系人列表中。然后,将它们提交给Xero:

try
   dim sResult = private_app_api.Create(mContacts)
Catch ex As Xero.Api.Infrastructure.Exceptions.ValidationException
 ' do something with ex to determine what went wrong
end try 

如果所有联系人都正确创建,则sresult将包含这些联系人及其Xero-GUID的列表,然后我需要将其反馈给从其发送的系统。这一切都能正常工作。

如果由于某种原因未创建一个或多个联系人,我将在ex.ValidationErrors()集合中获得一个或多个错误的列表,但在sresult中却一无所获。因此,我没有回溯到那些有效有效的方法,只有那些无效的方法。

要解决此问题,我正在遍历每个联系人并预先检查它们是否在Xero上不存在,并且没有重复的名称。这也有效,并且意味着我只提交我知道尚未在Xero上使用的联系人。

不过,我现在担心的是,我将在一个60秒的滚动窗口中遇到Xero API的60个调用限制。我试图通过预先检查可能导致问题的大多数常见问题来使代码健壮,但是每次这样做,我都会接近极限,这从理论上讲,我需要通过尝试增加一些复杂性限制对Xero的呼叫。

是否有更好的方法可以调用.create()并同时获取成功信息错误信息?

1 个答案:

答案 0 :(得分:0)

我认为解决此问题的方法似乎是在我第一次创建API对象时添加对RateLimiter的引用。这似乎实现了一种手段,其中任何超出速率限制的呼叫都将自动暂停。不过,似乎有必要将限制设置为略低于每60秒滚动窗口60,因为我仍然会遇到速率错误。我将其设置为50,并且一旦超出限制,我的测试代码就会等待一会儿。

尽管如此,我还没有弄清楚如何实现60 / 60s限制和5000 / 24h限制。