带有表单数据的WSO2 ESB HTTP POST

带有表单数据的WSO2 ESB HTTP POST,wso2,esb,synapse,Wso2,Esb,Synapse,我有一个soap服务,我想改变它并将消息发布到外部服务器 我可以通过旋度这样做: 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

我有一个soap服务,我想改变它并将消息发布到外部服务器

我可以通过旋度这样做:

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
但我不能让它正常工作。这是我的代理服务:

<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>


最终服务似乎只看到我发布到URL(而不是传入的数据属性)。

如果在文件中发送SOAP负载,则需要使用VFS传输。关于如何使用VFS传输解决您的问题,请参考以下示例

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

或者,您可以使用SOAPUI或任何SOAP客户端将负载直接发送到ESB代理端点

属性不是构建消息内容的方式。我发现最好的方法是使用
payloadFactory
。您需要构建的消息有一个根XML元素,每个表单字段有一个子元素,然后Axis2似乎通过以适当的格式序列化来处理
application/x-www-form-urlencoded
messageType
。因此,对您的代理的最小更改是:


用户
密码
/home/myfile/in
myBP
192.168.1.4
data.txt
. 例如


用户
密码
/home/myfile/in
myBP
192.168.1.4
$1

我为什么要使用VFS发布到网站?虽然上面有文件信息,但这不是目标。目标是使用表单数据执行HTTP post。