2016-11-24 1 views
1

Ich möchte wissen, wie man einen Anforderungsparameter von einem Soap-Endpunkt erhält. Genauer gesagt habe ich einen Endpunkt basierend auf http-Listener und ich rufe diesen Endpunkt über einen Soap-Client und ich möchte einen Wert im Körper dieser Soap-Anfrage gesendet werden. Hier sind die technisch Spezifikationen ..Wie bekomme ich Request-Parameter vom Soap-Endpunkt in Mule?

ich mule 3.8 und AnyPoint Studio 6.1.2

Dies ist ein Teil meiner Landschaft bin mit hier ein Teil meines mule xml ist:

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" 
    doc:name="HTTP Listener Configuration"/> 
<cxf:configuration name="CXF_Configuration" enableMuleSoapHeaders="true" initializeStaticBusInstance="true" 
    doc:name="CXF Configuration"/> 
<ws:consumer-config name="Web_Service_Consumer" service="KarmaService" port="KarmaPort" 
    serviceAddress="http://localhost:8080/TestingWS/Karma" wsdlLocation="http://localhost:8080/TestingWS/Karma?wsdl" doc:name="Web Service Consumer"/> 

<flow name="pichondemonoFlow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> 
    <cxf:proxy-service configuration-ref="CXF_Configuration" payload="body" doc:name="CXF"/> 
    <set-variable variableName="pichonVar" value="#[message.inboundProperties.'http.query.params'.arg0]" 
     doc:name="Variable"/> 
    <choice doc:name="Choice"> 
     . 
     . 
     . 
     . 

Und hier ist die Anforderung von einem SoapUI Auftraggeber:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sup="http://support.cxf.module.mule.org/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <sup:invoke> 
     <!--Optional:--> 
     <sup:arg0>Some value</sup:arg0> 
     </sup:invoke> 
    </soapenv:Body> 
</soapenv:Envelope> 

auch las ich etwas über xpath3 aber ich weiß nicht, ob dies die BES t Möglichkeit, meine XML-Anfrage zu parsen. Was ist der beste Weg?

Hoffe, das kann unterbesetzt werden.

Ich schätze, wenn mir jemand helfen kann. Vielen Dank im Voraus!

Antwort

0

Eine Möglichkeit ist es, die Transformation Nachrichtenkomponente zu verwenden:

<dw:transform-message metadata:id="234ee930-89d2-45ef-b888-96e940446fbe" doc:name="Transform Message"> 
    <dw:input-payload doc:sample="C:\Users\willekr\Desktop\sample.xml"/> 
     <dw:set-payload><![CDATA[ 
      %dw 1.0%output application/java 
      %namespace sup http://support.cxf.module.mule.org/ 
      %namespace soapenv http://schemas.xmlsoap.org/soap/envelope/ 
      --- 
      payload.soapenv#Envelope.soapenv#Body.sup#invoke.sup#arg0 
     ]]> 
    </dw:set-payload> 
</dw:transform-message> 
0

Ich bin nicht ganz sicher, was Sie unter „Ich im Körper dieser Seife Anfrage gesendet Wert erhalten möchten“. Basierend auf der Anweisung nehme ich an, dass Sie einen Wert in die SOAP-Anfrage einfügen möchten. Sie können Dataweave wie oben beschrieben ausprobieren.

Auch Xpath ist etwas, das zum Navigieren und Abrufen von Werten aus dem XML verwendet wird. Aber keinen Wert einfügen.

0

Ich habe mit dem gleichen Szenario zu tun. Verwenden Xpath die Soap Xml und Set in einer Variablen SetVariable mit analysieren oder wenn Sie wollen analysiert mehr params Nachrichteneigenschaften verwenden so einzustellen, dass Sie fließen nicht mit Folge von Variablen gefüllt werden. Prost!

Verwandte Themen