有效载荷解析错误(Soap 1.1 与 Soap 1.2)
Payload parsing error (Soap 1.1 vs Soap 1.2)
我在 WSO2 ESB 上遇到负载问题。
当我发送 SOAP 1.1 消息时,我的终结点正确应答。
我制作了一个接受参数并将其转换为 SOAP 的代理。然后通过我的端点发送它。
问题是我的消息格式正确(我认为是这样)但我总是有这个错误:
ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException:
ParseError at [row,col]:[1,1] Message: Content is not allowed in
prolog.
如果我在 Slashdot 上检查这个,它似乎可能是某种内容类型错误:WSO2 ESB Content is not allowed in prolog exception in a OutSecuence 但即使我在端点中定义了 format="soap11",信封似乎是 SOAP 1.2
我的代理定义是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Test11"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<payloadFactory media-type="xml">
<format>
<ns2:QueryReqWS xmlns:ns2="http://hiddenUrl.com/">
<TOTO xmlns="urn:hl7-org:v3"
ITSVersion="XML_1.0"
xmlns:mif="urn:hl7-org:v3/mif"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hl7-org:v3 urn:hl7-org:v3 file:/schemas/TOTO.xsd">
<id root="1234"/>
...
<controlActEvent classCode="CACT" moodCode="EVN">
...
<queryByParameter>
<queryId root="456"/>
<responseModalityCode code="R"/>
<parameterList>
<Gender>
<value code="" >
</value>
</Gender>
<BirthDate>
<value xsi:type="TS" specializationType="TS.FULLDATE" value=""/>
</BirthDate>
<Name>
<value>
<given qualifier="IN"></given>
<family></family>
</value>
</Name>
</parameterList>
</queryByParameter>
</controlActEvent>
</TOTO>
</ns2:QueryReqWS>
</format>
<args>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:gender)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:birthday)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:lastname)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:firstname)"/>
</args>
</payloadFactory>
<log level="full"/>
</inSequence>
<outSequence>
<log level="full"/>
<send/>
</outSequence>
<faultSequence/>
<endpoint>
<address uri="http:/test/testMessage/Unknown" format="soap11">
</endpoint>
</target>
<description/>
</proxy>
示例消息如下:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<ns2:testRequest xmlns:ns2="http://com.hiddenurl/">
<ns2:person>
<ns2:gender>M</ns2:gender>
<ns2:lastname>Man</ns2:lastname>
<ns2:firstname>Spider</ns2:firstname>
<ns2:birthday>20150301</ns2:birthday>
</ns2:person>
</ns2:testRequest>
</soap:Body>
</soap:Envelope>
Soap 1.1 消息示例:
<id root="1234"/>
...
<controlActEvent classCode="CACT" moodCode="EVN">
...
<queryByParameter>
<queryId root="456"/>
<responseModalityCode code="R"/>
<parameterList>
<BirthDate>
<value xsi:type="TS" specializationType="TS.FULLDATE" value="20150301"/>
</BirthDate>
<Gender>
<value code="M" >
</value>
</Gender>
<Name>
<value>
<given qualifier="IN">Spider</given>
<family>Man</family>
</value>
</Name>
</parameterList>
</queryByParameter>
</controlActEvent>
</TOTO>
</ns2:QueryReqWS>
</soapenv:Body>
</soapenv:Envelope>
非常感谢您的帮助。
似乎 ESB 无法正确构建消息。请检查您的内容类型 header 是 text/xml 还是 application/xml。按如下方式启用 wirelog。
关闭 ESB 实例。
找到位于 $ESB_HOME/repository/conf 目录下的 log4j.properties 文件并取消注释以下行
log4j.logger.org.apache.synapse.transport.http.wire=DEBUG
然后将 ESB 控制台日志粘贴到此处。您可能会在那里看到 ContentType header。
此外,符号“>>”给出写入 ESB 的内容,“<<”给出从 ESB 写入的内容。
我在 WSO2 ESB 上遇到负载问题。
当我发送 SOAP 1.1 消息时,我的终结点正确应答。
我制作了一个接受参数并将其转换为 SOAP 的代理。然后通过我的端点发送它。
问题是我的消息格式正确(我认为是这样)但我总是有这个错误:
ERROR - RelayUtils Error while building Passthrough stream org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Content is not allowed in prolog.
如果我在 Slashdot 上检查这个,它似乎可能是某种内容类型错误:WSO2 ESB Content is not allowed in prolog exception in a OutSecuence 但即使我在端点中定义了 format="soap11",信封似乎是 SOAP 1.2
我的代理定义是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Test11"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<payloadFactory media-type="xml">
<format>
<ns2:QueryReqWS xmlns:ns2="http://hiddenUrl.com/">
<TOTO xmlns="urn:hl7-org:v3"
ITSVersion="XML_1.0"
xmlns:mif="urn:hl7-org:v3/mif"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hl7-org:v3 urn:hl7-org:v3 file:/schemas/TOTO.xsd">
<id root="1234"/>
...
<controlActEvent classCode="CACT" moodCode="EVN">
...
<queryByParameter>
<queryId root="456"/>
<responseModalityCode code="R"/>
<parameterList>
<Gender>
<value code="" >
</value>
</Gender>
<BirthDate>
<value xsi:type="TS" specializationType="TS.FULLDATE" value=""/>
</BirthDate>
<Name>
<value>
<given qualifier="IN"></given>
<family></family>
</value>
</Name>
</parameterList>
</queryByParameter>
</controlActEvent>
</TOTO>
</ns2:QueryReqWS>
</format>
<args>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:gender)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:birthday)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:lastname)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:firstname)"/>
</args>
</payloadFactory>
<log level="full"/>
</inSequence>
<outSequence>
<log level="full"/>
<send/>
</outSequence>
<faultSequence/>
<endpoint>
<address uri="http:/test/testMessage/Unknown" format="soap11">
</endpoint>
</target>
<description/>
</proxy>
示例消息如下:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<ns2:testRequest xmlns:ns2="http://com.hiddenurl/">
<ns2:person>
<ns2:gender>M</ns2:gender>
<ns2:lastname>Man</ns2:lastname>
<ns2:firstname>Spider</ns2:firstname>
<ns2:birthday>20150301</ns2:birthday>
</ns2:person>
</ns2:testRequest>
</soap:Body>
</soap:Envelope>
Soap 1.1 消息示例:
<id root="1234"/>
...
<controlActEvent classCode="CACT" moodCode="EVN">
...
<queryByParameter>
<queryId root="456"/>
<responseModalityCode code="R"/>
<parameterList>
<BirthDate>
<value xsi:type="TS" specializationType="TS.FULLDATE" value="20150301"/>
</BirthDate>
<Gender>
<value code="M" >
</value>
</Gender>
<Name>
<value>
<given qualifier="IN">Spider</given>
<family>Man</family>
</value>
</Name>
</parameterList>
</queryByParameter>
</controlActEvent>
</TOTO>
</ns2:QueryReqWS>
</soapenv:Body>
</soapenv:Envelope>
非常感谢您的帮助。
似乎 ESB 无法正确构建消息。请检查您的内容类型 header 是 text/xml 还是 application/xml。按如下方式启用 wirelog。
关闭 ESB 实例。 找到位于 $ESB_HOME/repository/conf 目录下的 log4j.properties 文件并取消注释以下行
log4j.logger.org.apache.synapse.transport.http.wire=DEBUG
然后将 ESB 控制台日志粘贴到此处。您可能会在那里看到 ContentType header。
此外,符号“>>”给出写入 ESB 的内容,“<<”给出从 ESB 写入的内容。