我必須創建一個multipart/form-data HTTP請求,其中將從一個請求接收文件,並從一些請求中獲取一些額外的表單數據值。例如:從多個HTTP響應中創建多部分請求
1)HTTP監聽接收文件作爲附件
2)發送HTTP請求到3個或更多的REST API,並且存儲的值到屬性變量
3)創建與所述文件的HTTP請求在步驟1中接收到的以及在步驟2中收到的值
當我在步驟1中收到文件時,將它保存在一個屬性中,我還將後續請求中的值保存到不同的屬性中。
現在當我在步驟3中從這些屬性構造HTTP POST請求時,我沒有收到服務器上的任何值,包括字段和文件。
我的流程:
<http:request-config name="HTTP_poster_Configuration" host="localhost" port="53536" doc:name="HTTP Poster Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="1.1.1.1" basePath="/xyz" port="8080" doc:name="HTTP Request Configuration"/>
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="getticketFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<set-session-variable variableName="var1" value="NA" doc:name="Session Variable" />
<set-variable variableName="var2" value="P11335577" doc:name="Flow name Variable" />
<set-variable variableName="var3" value="Goku" doc:name="Flow title Variable" />
<set-variable variableName="var4" value="Saiyan Dead but Alive" doc:name="Flow description Variable" />
\t <set-variable variableName="uploadFile" value="#[message.inboundAttachments['file'].dataSource.content]" doc:name="Flow type Variable" />
.................Sending requests to other services
...................Setting property Variables
<!-- Finally -->
\t \t <http:request config-ref="HTTP_poster_Configuration" path="/handler" method="POST" doc:name="Uploading_Doc" >
\t <http:request-builder>
<http:query-param paramName="filedata" value="#[flowVars ['uploadFile']]"/>
<http:query-param paramName="sid" value="#[flowVars ['var1']]"/>
<http:query-param paramName="cid" value="#[flowVars ['var2']]"/>
<http:query-param paramName="udi" value="#[flowVars ['var3']]"/>
<http:header headerName="Content-Type" value="multipart/form-data"/>
\t </http:request-builder>
\t \t </http:request>
</flow>
</mule>
謝謝,它的工作。但是,現在文件名稱與附件的密鑰名稱相同。我怎樣才能設置附件的文件名。 –
抱歉延遲。我看到您保存了文件內容類型,然後將其用於附件。這是否解決了文件名問題? – afelisatti
不,它沒有。所以我決定將請求中的文件名另外發送給監聽器。如果我嘗試#[message.inboundAttachments ['filedata']。dataSource.getName()],它只是返回鍵名即'filedata'。歡迎任何其他建議。 –