2011-12-16 93 views
2

我需要發送一些post數據到其他服務器的mule 3.1.2。這裏是我的騾配置文件:Mule代理HTTP POST表單數據3.1.2

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" 
xmlns:rmi="http://www.mulesoft.org/schema/mule/rmi" xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio" 
xmlns:vm="http://www.mulesoft.org/schema/mule/vm" 
xsi:schemaLocation=" 
     http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/3.1/mule-http.xsd 
     http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/3.1/mule-scripting.xsd 
     http://www.mulesoft.org/schema/mule/rmi http://www.mulesoft.org/schema/mule/rmi/3.1/mule-rmi.xsd 
     http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.1/mule.xsd 
     http://www.mulesoft.org/schema/mule/stdio http://www.mulesoft.org/schema/mule/stdio/3.1/mule-stdio.xsd 
     http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/3.1/mule-vm.xsd"> 

    <flow name="cxfFlow"> 
     <!-- Accept a http request from the specific address --> 
     <http:inbound-endpoint address="http://localhost:5678/httpHello"> 
      <byte-array-to-string-transformer/> 
      <http:body-to-parameter-map-transformer/> 
     </http:inbound-endpoint> 

     <!-- This component is just set to show the message accecpted from the request --> 
     <scripting:component> 
      <scripting:script engine="groovy"> 
       def msg = "message: $message;\npayload:$payload;\n result:$result".toString() 
       println msg 
       println "init param:$payload" 
       return payload 
      </scripting:script> 
     </scripting:component> 

     <!-- This component is set to parse the parameter passed by the request --> 
     <scripting:component> 
      <scripting:script engine="groovy"> 
        def paramstr = "" 
        for(param in payload){ 
         paramstr = paramstr + "&amp;" + param.key+ "=" + param.value 
        } 
       println "querystr:$paramstr" 
       return paramstr.substring(1) 
      </scripting:script> 
     </scripting:component> 

     <choice> 
      <when expression="payload.size()>0" evaluator="groovy"> 
       <http:outbound-endpoint address="http://localhost:8080/webproj/index.jsp" method="POST" contentType="text/http"> 
       </http:outbound-endpoint> 
      </when> 
      <otherwise> 
       <scripting:component> 
        <scripting:script engine="groovy"> 
         println payload 
         return "no parameter is given!" 
        </scripting:script> 
       </scripting:component> 
      </otherwise> 
     </choice> 
    </flow> 
</mule> 

我發一個帖子請求到http://localhost:5678/httpHello,併發送一些參數。在http://localhost:8080/webproj/index.jsp頁面中,我檢查收到的參數,但該參數爲空。我想在index.jsp頁面開始時接收發送的參數,如何更改我的mule-config文件?非常感謝!

回答

0

假設入站和出站HTTP內容類型爲application/x-www-form-urlencoded,這裏有一個配置可以做你想做的事情(即記錄負載並根據存在性選擇不同的響應的參數):

<flow name="webFormFlow"> 
    <!-- Accept a http request from the specific address --> 
    <http:inbound-endpoint address="http://localhost:5678/httpHello"> 
     <http:body-to-parameter-map-transformer /> 
    </http:inbound-endpoint> 

    <!-- This logger is just set to show the message accepted from the request --> 
    <logger level="INFO" message="#[payload]" /> 

    <choice> 
     <when expression="payload.size() &gt; 0" evaluator="groovy"> 
      <http:outbound-endpoint address="http://localhost:8080/webproj/index.jsp" 
       method="POST" contentType="application/x-www-form-urlencoded" /> 
     </when> 
     <otherwise> 
      <message-properties-transformer> 
       <add-message-property key="Content-Type" value="text/plain" /> 
      </message-properties-transformer> 
      <expression-transformer> 
       <return-argument expression="no parameter is given!" 
        evaluator="string" /> 
      </expression-transformer> 
     </otherwise> 
    </choice> 
</flow> 
+0

如果我想通過POST方法發送參數而不是querystring?我不希望參數出現在網址中。 – 2011-12-18 04:08:15