WSO2: ESB: сбой передачи полученных данных, не в формате SOAP, в последовательность - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть REST API (назовем его MYTESTAPI1), который вызывает сторонний API для некоторых данных. Сторонний API возвращает данные в следующем формате.

После вызова, когда в вышеуказанном API вызывается новая последовательность, она работает нормально.

<wd:Report_Data xmlns:wd="Project_Export">
<wd:Report_Entry>
<wd:referenceID>PR00001</wd:referenceID>
<wd:projectName>
Test Project1
</wd:projectName>
<wd:Inactive>0</wd:Inactive>
<wd:Cost_Center_group>
<wd:Cost_Center_ID>CG1</wd:Cost_Center_ID>
</wd:Cost_Center_group>
<wd:Research_Budget_Remaining>0</wd:Research_Budget_Remaining>
<wd:Currency wd:Descriptor="AUD">
<wd:ID wd:type="WID">8a96ee707a264afe888d90ef93253305</wd:ID>
<wd:ID wd:type="Currency_ID">AUD</wd:ID>
<wd:ID wd:type="Currency_Numeric_Code">036</wd:ID>
</wd:Currency>
</wd:Report_Entry>
</wd:Report_Data>

Но, когда я вызываю API-интерфейс REST MYTESTAPI1 из другой прокси-службы (которая находится в другом файле CAR), он выдает следующее исключение. Любая помощь будет очень полезна. Если я верну результат, не передавая последовательность, то она не выдаст ошибку.

[2020-02-10 18:00:39,229] ERROR {org.apache.synapse.transport.passthru.util.RelayUtils} - Error while building Passthrough stream org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found Report_Data
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:252)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)
    at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:65)
    at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:153)

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Похоже, что сообщение пытается создать с помощью SOAP построителя. Чтобы избежать этой проблемы, вы можете попробовать установить для свойства messageType что-то подходящее. (Например: application / xml)

Попробуйте добавить это свойство перед вызовом последовательности.

<property name="messageType" value="application/xml" scope="axis2"/>
0 голосов
/ 11 февраля 2020

Я полагаю, вы используете конечную точку адреса. Пожалуйста, переключитесь на конечную точку HTTP для решения проблемы.

...