wso2 esb synapse

WSO2 ESB HTTP POST con datos de formulario



synapse (2)

Las propiedades no son la forma de construir el contenido del mensaje. La mejor manera que he encontrado para hacerlo es con una payloadFactory . El mensaje que debe compilar tiene un elemento raíz XML con un elemento secundario por campo de formulario, y luego parece que Axis2 maneja el messageType de messageType de application/x-www-form-urlencoded serializando en el formato apropiado. Por lo tanto, un cambio mínimo en su proxy sería:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="ExampleHTTPPostWithFormData" transports="http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <log/> <property name="messageType" value="application/x-www-form-urlencoded" scope="axis2" type="STRING"/> <payloadFactory media-type="xml"> <format> <params xmlns=""> <uid>user</uid> <pwd>password</pwd> <filedir>/home/myfile/in</filedir> <busproc>myBP</busproc> <serverip>192.168.1.4</serverip> <filename>data.txt</filename> </params> </format> </payloadFactory> <send> <endpoint> <address uri="http://somelocation.com:8833/webservice/inbound/here" format="rest"/> </endpoint> </send> <log level="full"/> </inSequence> </target> <description/> </proxy>

También puede ser conveniente agregar <property name="FORCE_HTTP_1.0" value="true" scope="axis2" type="STRING"/> dependiendo de si su servicio REST maneja HTTP / 1.1.

Si necesita parámetros, puede pasar argumentos a la payloadFactory , utilizando las extensiones XPath . P.ej

<payloadFactory media-type="xml"> <format> <params xmlns=""> <uid>user</uid> <pwd>password</pwd> <filedir>/home/myfile/in</filedir> <busproc>myBP</busproc> <serverip>192.168.1.4</serverip> <filename>$1</filename> </params> </format> <args> <arg evaluator="xml" expression="$ctx:filename"/> </args> </payloadFactory>

Tengo un servicio de jabón que quiero cambiar y publicar un mensaje en un servidor externo.

Pude hacer esto a través de curl así:

curl --data-urlencode "filename=data.txt" --data-urlencode "filedir=/home/myfile/in" --data-urlencode "busproc=MyBP" --data-urlencode "serverip=192.168.1.4" --data-urlencode"uid=myuserid" --data-urlencode "pwd=mypwd" http://somelocation.com:8833/webservice/inbound/here

Pero no puedo hacer que funcione correctamente. Aquí está mi servicio proxy:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="ExampleHTTPPostWithFormData" transports="http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <log/> <property name="messageType" value="application/x-www-form-urlencoded" scope="axis2" type="STRING"/> <property name="HTTP_METHOD" value="post" scope="axis2" type="STRING"/> <send> <endpoint> <address uri="http://somelocation.com:8833/webservice/inbound/here" format="pox"/> <property name="uid" value="user"/> <property name="pwd" value="password"/> <property name="filedir" value="/home/myfile/in"/> <property name="busproc" value="myBP"/> <property name="serverip" value="192.168.1.4"/> <property name="filename" value="data.txt"/> </endpoint> </send> <log level="full"/> </inSequence> </target> <description/> </proxy>

El servicio final parece solo verme publicar en la URL (pero no en las propiedades de datos pasados).


Si envía la carga útil SOAP en un archivo, deberá usar el transporte VFS. Consulte la siguiente muestra sobre cómo usar el transporte VFS para resolver su problema

http://docs.wso2.org/pages/viewpage.action?pageId=26838852

Alternativamente, puede usar SOAPUI o cualquier cliente SOAP para enviar la carga útil directamente al punto final proxy de ESB