日安!
我最近才开始研究ESB总线。我需要用内容-Type:application/x form-urlencoded在HTTP请求中转换传入的SOAP消息。
我已经创建了一个代理服务,即Java中的Custom 1,转换后的消息,如何将它传递给端点并在Custom 2中获得答案?
在图片中,我画了一个如何转换消息的例子。
发布于 2014-10-13 09:27:38
您不需要编写自定义中介程序,您可以将SOAP转换为rest调用,使用rest服务示例等待2个参数,如
param1=value1¶m2=value2
<!-- prepare data for org.apache.axis2.transport.http.XFormURLEncodedFormatter message formatter -->
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<root>
<param1>$1</param1>
<param2>$2</param2>
</root>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg evaluator="xml" expression="$body/node1/node11/text()"/>
<arg evaluator="xml" expression="$body/node1/node12/text()"/>
</args>
</payloadFactory>
<!-- set output format -->
<property name="messageType" value="application/x-www-form-urlencoded" scope="axis2" type="STRING"/>
<property name="DISABLE_CHUNKING" value="true" scope="axis2" type="STRING"/>
<!-- call the REST endpoint with synch call : response is received in this sequence -->
<call>
<endpoint key="conf:endpoints/MyServiceEndpoint.xml"/>
</call>
<!-- the response is here, transform it has needed -->
<xslt key="myxsl"/>
<!-- send this response to the client -->
<property name="messageType" value="application/soap+xml" scope="axis2" type="STRING"/>
<!-- or test/xml and in this case, don't forget to specify a SOAP Action, below, a sample to specify a blank soapAction : -->
<header name="Action" value=""""/>
<send/>
示例端点conf (使用此示例,需要按顺序定义属性uri.var.ServiceURL ):
<endpoint>
<http method="POST" uri-template="{uri.var.ServiceURL}/Path/2011-10-01"/>
</endpoint>
但是,如果您确实需要自定义中介程序,只需用它们替换payloadFactory和xslt中介程序即可。
发布于 2014-10-13 12:36:23
谢谢您的回复,我仍然需要编写自定义中介,这只是一个非常复杂的转换消息,我将给出一个如何转换消息的示例。
http://schemas.xmlsoap.org/soap/envelope/“xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance”xmlns:xsd="">http://www.w3.org/2001/XMLSchema"> Field1 11 Field2 22
0000035401SM0000009700009700000121 iQBRAwkBAAAD3j2r2NwBAeevAf4nvAG4rGAyAePHkyVKTt7wffzURhOckd3ctgmG yQkKWkXh3CLpsbrExsllVUBlO6ih8qHozk2uttXApzHXQXoO 0000099000000000开始// FIELD1=11 // Soap数据FIELD2=22 // Soap数据结束开始签名=+pch =+pch END签名
POST /cgi/es/es_pay_check.cgi HTTP/1.0内容-类型:application/x form-urlencoded内容-长度: 498 inputmessage=0000035401SM000000970000009700000121%0D%0Aapi99+ +++++++++++00000990%0D%0A++++++++++++++++++++00000000%0ABEGIN%0D% 0FIELD1%11%0FIELD2%220AEND%0D%0ABEGIN+SIGNATURE%0AiQBRAwkBAABCiUs 00dQBATG5AgDHdZ6RYHykL46QBaAvnHYaY4p0pDjgjO4K1Iyj%0D%0AfSBSvCRpS%2 F0EYO9NspuyLeANEQQkkGE%2F37gUxiPqzAgStXjpsAHH%0D%0A%3DvSgb%0AEND+签名
0000030301SM00000046004600121 0J000500064182 00000000开始iQBRAwkBAAD6tj1BJ10BAYKxAfsHlQsEFnO2k6ry++W8O8AiJuv4gT+ZVCfZHsKk c0CbZpP/W3vkljG3xNzMLiqjbwkNuIdwR9Dq7gHmH+ZQMhbT DATE=04.10.2014 12:34:12 ERROR=0 ERRMSG= FIELD3=33 FIELD4=44 FIELD5=55 END BEGIN签名
">http://schemas.xmlsoap.org/soap/envelope/"> Field3 33 Field4 44 Field5 55好的
https://stackoverflow.com/questions/26335550
复制相似问题