无限循环调用getSiteRefreshInfo

时间:2014-12-29 18:13:28

标签: infinite-loop yodlee

大约两周前,我写了一个实现Add Site Account flow chart的程序。

我在几天的时间里跑了好几次,每次都很好。

然后我做了其他事情,大约一个星期后又尝试再次运行上述程序。现在它没有用,但是在调用getSiteRefreshInfo(流程图左下角的循环)时进入了一个看似无限的循环。我尝试在接下来的3-4天内运行了很多次,然后得到了每次进入一个循环。在我杀死该程序之前,它已经循环了20-30分钟。这与一周前使用完全相同的凭据正常工作的源代码完全相同。

每次“code”为0,“siteRefreshStatus”为“LOGIN_SUCCESS”,根据流程图表示我应该等待2-4秒,然后重复呼叫:

{
  "siteRefreshStatus": {
    "siteRefreshStatusId": 2,
    "siteRefreshStatus": "LOGIN_SUCCESS"
  },
  "siteRefreshMode": {
    "refreshModeId": 2,
    "refreshMode": "NORMAL"
  },
  "updateInitTime": 1418945894,
  "nextUpdate": 1418946794,
  "code": 0,
  "itemRefreshInfo": [
    {
      "memItemId": 10070147,
      "itemSuggestedFlow": {
        "suggestedFlowId": 2,
        "suggestedFlow": "REFRESH"
      },
      "errorCode": 405,
      "retryCount": 0
    }
  ],
  "noOfRetry": 0
}

我传递给addSiteAccount1的帐户是美国运通信用卡帐户,这是我为此用户添加的唯一帐户(换句话说,这是唯一需要刷新的帐户)。一旦程序处于循环中,我使用相同的凭据手动登录到American Express网站,我可以查看帐户,获取最近的交易列表等。我发现Yodlee可能使用与浏览器不同的界面确实如此,但这确实向我展示了美国运通网站的运作情况。

我试着让循环运行超过30分钟,看看发生了什么。一小时55分钟后,我得到了这个例外:

{
  "errorOccurred": "true",
  "exceptionType": "Unknown Exception Occurred",
  "referenceCode": "_022c5fa3-3933-4491-b390-1150d8b28ab3",
  "detailedMessage": "Technical Difficulty Processing Request"
}

我尝试在接下来的3-4天内不时运行程序,每次都进入循环。然后它突然开始再次正常运行,此刻仍然正常运行。请注意,完全相同的源代码和凭据会正常运行一段时间,然后进入循环3-4天,现在再次正常运行。

我有两个问题:

1)我应该如何退出这样的循环?我解释API流程图的方式是我应该循环,直到我得到“code”或“siteRefreshStatus”的值,告诉我退出循环。我可以轻松实现自己的计时器,但我不知道在所有情况下什么时间值都适合。 Yodlee处于更好的位置,可以知道循环是否已经持续了太长时间,所以我希望在这种情况下返回REFRESH_TIMED_OUT。

2)如果我们在生产中运行此代码,我们将无法刷新此客户的信息至少3天,这对我们的应用来说将是一个非常长的时间。在这种情况下,还有什么可以尝试的吗?

感谢!!!

1 个答案:

答案 0 :(得分:0)

我认为您遇到了另一个问题:您的itemRefreshInfo有错误代码405,this page说的是:“更新请求已取消(405):您的帐户因为您取消了请求而未更新。”

我相信你会以某种方式取消你的请求。