Java Yodlee-startSiteRefresh提供405(不允许使用方法)

Java Yodlee-startSiteRefresh提供405(不允许使用方法),java,scala,soap,axis,yodlee,Java,Scala,Soap,Axis,Yodlee,我正在尝试刷新某个用户帐户的所有站点(有时当用户输入某些类型的帐户时,它们不会完全刷新,因此我们不会对所有用户帐户进行完全强制刷新) <p> (405)Method Not Allowed </p> </div> <div class="details block"> <pre class="stacktrace">at org.apache

我正在尝试刷新某个用户帐户的所有站点(有时当用户输入某些类型的帐户时,它们不会完全刷新,因此我们不会对所有用户帐户进行完全强制刷新)

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
根据,我们应该使用startSiteRefresh,但是在实际调用
startSiteRefresh
时,我得到了一个
405
错误,即
Locators.refreshService.startSiteRefresh(userContext,id,refreshParameters)

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
下面是代码(用
scala
编写,但使用
java
axis/soap API),它应该与所示的逻辑相对应

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
RefreshInitiate
在此处定义

sealed abstract class RefreshInitiate(val id:Long)

object RefreshInitiate {
  case object High extends RefreshInitiate(1)
  case object Low extends RefreshInitiate(2)
  case object StopReasonTimeout extends RefreshInitiate(100)
  case object StopReasonUserAborted extends RefreshInitiate(101)
  case object StopReasonMFATimeout extends RefreshInitiate(102)
  case object StopReasonMFAGathererTimeout extends RefreshInitiate(103)
}
<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
因此,
RefreshInitiate.High.id.toInt
对应于Int(1),它取自java_soap_示例
com.yodlee.sampleapps.helper.RefreshHelper

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
其他调用,如
startSiteReferesh2
(在java_soap_示例中使用)和
startSiteRefresh7
也会返回
405

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
这是调用的堆栈跟踪

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
URL的配置如下所示

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
export YODLEE_SOAPURL="https://rest.developer.yodlee.com/services/services"
export YODLEE_SDKVERSION="_12_0"

端点的最终URL为
https://rest.developer.yodlee.com/services/services/RefreshService_12_0

您能检查一下您使用的服务名称是否正确吗

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
虽然我提供了一些Java代码供您帮助,但这可能会有所帮助

<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>
RefreshServiceLocator locator = new RefreshServiceLocator();
String serviceName = locator.getRefreshServiceWSDDServiceName();
serviceName = serviceName + getSDKVersion(); //SDKversion which you are using
locator.setRefreshServiceEndpointAddress(System.getProperty("com.yodlee.soap.services.url")
+ "/" + serviceName1);
refresh = locator.getRefreshService();
除此之外,您还可以检查所有配置是否正确吗?
是另一个可能有帮助的线程(与Yodlee无关,但通常是405)。

您应该只使用startSiteRefresh,您得到的是405作为Http错误代码还是Yodlee的错误代码作为响应?如果您收到Yodlee的响应,请检查您是否正在调用stopSiteRefresh,然后请不要使用它,因为这将导致405(用户中止刷新)。错误代码没有出现在Yodlee的响应中,这是Yodlee抛出的一般HTTP错误(通过Axis通过SOAP API级联),有关更多信息,请参阅编辑。启动刷新的代码完全如图所示,在完成各种
addSite
调用后,也会在相对较短的时间内完成此操作,但是根据文档,它应该可以正常工作,无需对原始帖子进行编辑,获取定位器的代码与其他所有定位器使用的代码相同,因此,除非有关于
RefreshServiceLocator
的特定内容,否则我不认为这是原因,我会尝试处理它,尽管我认为您缺少在serviceName末尾附加SDKVersion,这是强制性的。请检查该部分。附加SDK版本没有任何区别,仍然得到相同的错误作为最终参考,刷新服务的最终端点地址的字符串为
https://rest.developer.yodlee.com/services/services/RefreshService_12_0
看起来您正在使用与siteAccountManagement相同的refreshService定位器。此处-Locators.refreshService.startSiteRefresh(userContext、id、refreshParameters),同时为refreshService创建不同的定位器。请查收。
<p>
            (405)Method Not Allowed
          </p>
        </div>
        <div class="details block">
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)</pre>
          <pre class="stacktrace">at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)</pre>
          <pre class="stacktrace">at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</pre>
          <pre class="stacktrace">at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</pre>
          <pre class="stacktrace">at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invokeEngine(Call.java:2784)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2767)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2443)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:2366)</pre>
          <pre class="stacktrace">at org.apache.axis.client.Call.invoke(Call.java:1812)</pre>
          <pre class="stacktrace">at com.yodlee.soap.core.refresh.refresh.RefreshServiceSoapBindingStub.startSiteRefresh(RefreshServiceSoapBindingStub.java:5079)</pre>
          <pre class="stacktrace">at com.monetise.yodlee.login.Sites$$anonfun$initiateRefresh$1.apply(Sites.scala:98)</pre>