在WSO2 EI 6.6.0中调用带有DSS端点的API时出错

问题描述

我正在尝试使用Dataservice端点调用API。这是API的顺序。

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="atms-v1-getATMInfo-in-sequence" xmlns="http://ws.apache.org/ns/synapse">
    <property name="SEQ_NAME" scope="default" type="STRING" value="atms_v1_getATMInfo_inSeq"/>
    <property action="remove" name="TRANSPORT_HEADERS" scope="axis2"/>
    <header name="Accept" scope="transport" value="application/json"/>
    <log level="full"/>
    <call>
        <endpoint name="AtmInfoEndPoint">
            <address uri="https://127.0.0.1:8243/services/atmService"/>
        </endpoint>
    </call>
    </response>
</sequence>

但是当我调用API时,我收到错误消息

[2020-09-17 07:22:58,565] ERROR {org.apache.synapse.transport.passthru.ServerWorker} - Error processing GET request for : /services/atmService/atms org.apache.axis2.AxisFault: The endpoint reference (EPR) for the Operation not found is /services/atmService/atms and the WSA Action = null. If this EPR was prevIoUsly reachable,please contact the server administrator.
    at org.apache.axis2.engine.dispatchPhase.checkPostConditions(dispatchPhase.java:102)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:329)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:368)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:189)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我查看了一些文档,但找不到答案。请有人,让我知道如何解决此问题。谢谢。

解决方法

您必须在调用端点之前设置soap 操作。肥皂动作应该是数据服务的操作名称:

<property name="SOAPAction" scope="transport" value="urn:op_name"/>