我試圖調用一個預期會收到multipart/form-data的休息服務,並且我正面臨着一些問題。Mule http:outbound-endpoint + multipart/form-data
經過一段時間的搜索,我明白我必須將有效負載移動到出站附件並將有效負載設置爲空。
<expression-component><![CDATA[
ds = new org.mule.message.ds.StringDataSource(formdata,'payload','multipart/form-data');
dh = new javax.activation.DataHandler(ds);
message.outboundAttachments['payload'] = dh;
]]></expression-component>
<set-payload value="#[null]" />
我也做了,但得到的錯誤:
我收到了內容類型錯誤: 消息:郵件包含MIME類型爲 「text/xml的」 當「的multipart/form-data的「預計。
Obs .:我不得不使用表達式組件,因爲如果我只是使用set-attachment,我會收到一個「name must not null」錯誤。
由於這裏的問題是內容的類型,我也嘗試轉換消息屬性。
<message-properties-transformer overwrite="true" doc:name="Message Properties">
<add-message-property key="Content-Type" value="multipart/form-data;charset=utf-8"/>
</message-properties-transformer>
之後,我收到了來自其他服務的400錯誤。
我也嘗試將多部分中的每個屬性(鍵值)作爲內容類型放在單獨的附件中:text/plain,這裏的問題相同。
我想我的問題是如何正確連接,以便內容類型轉換成multipart/form-data成功。
我很感激任何幫助。謝謝。
HTTP外呼代碼:
<enricher source="#[message.inboundProperties['http.status']]" target="#[variable:out]" doc:name="Message Enricher">
<http:outbound-endpoint exchange-pattern="request-response" method="POST" host="${jbpm.host}" port="${jbpm.port}" path="#[address]" doc:name="HTTP" mimeType="multipart/form-data">
<response>
<object-to-string-transformer />
</response>
</http:outbound-endpoint>
</enricher>
<logger message="RESPONSE STATUS - #[variable:out]" level="INFO" doc:name="Logger"/>
<set-payload value="needAXml" doc:name="Set Payload"/>
<mulexml:object-to-xml-transformer doc:name="Object to XML"/>
<mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" doc:name="XSLT">
<mulexml:xslt-text>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bpmsws="http://www.arizona.com.br/esb/bpmsws/service/v1_0_0/"
xmlns:bpms="http://www.arizona.com.br/bpms/core/v1_0_0/">
<xsl:param name="responseStatus"/>
<xsl:template match="/">
<bpmsws:httpPostResponse>
<status xmlns=""><xsl:value-of select="$responseStatus" /></status>
</bpmsws:httpPostResponse>
</xsl:template>
</xsl:stylesheet>
</mulexml:xslt-text>
<mulexml:context-property key="responseStatus" value="#[variable:out]"/>
</mulexml:xslt-transformer>