大约2周前,我写了一个实现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的帐户是一个美国运通信用卡帐户,这是我为该用户添加的唯一帐户(换句话说,这是唯一需要刷新的帐户)。当程序处于循环中时,我使用这些相同的凭据手动登录到美国运通网站,我可以查看帐户,获取最近交易的列表等。我意识到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天,这对于我们的应用程序来说将是非常长的时间。在这种情况下,我们还有什么可以尝试的吗?
谢谢!
发布于 2015-04-28 04:37:18
我认为您正在遭受一个不同的问题:您的itemRefreshInfo有错误代码405,this page说的是:“更新请求已取消(405):您的帐户没有更新,因为您取消了请求。”
我相信你以某种方式取消了你的请求。
https://stackoverflow.com/questions/27693900
复制相似问题