如何阻止Mule向HTTP响应添加默认内容类型?
目前,Mule正在添加'text / plain'内容类型。我的REST调用并不总是指定预期的内容,而且服务不指示所提供的内容 - 将其留给客户端(浏览器)进行解释。
我的“代理”流程如下所示:
<flow name="DragonScalaProxy" doc:name="DragonScalaProxy">
<http:inbound-endpoint address="http://localhost:8002" exchange-pattern="request-response" doc:name="HTTP" disableTransportTransformer="true"/>
<logger level="INFO" doc:name="Logger"/>
<copy-properties propertyName="http.method" doc:name="Copy HTTP Method"/>
<message-properties-transformer doc:name="Message Properties">
<delete-message-property key="Content-Type"/>
</message-properties-transformer>
<http:outbound-endpoint address="http://localhost:8000#[header:INBOUND:http.request]" exchange-pattern="request-response" doc:name="HTTP" disableTransportTransformer="true"/>
<remove-property propertyName="Content-Type" doc:name="Remove Content-Type"/>
<message-properties-transformer doc:name="Message Properties">
<delete-message-property key="Content-Type"/>
</message-properties-transformer>
<logger level="INFO" doc:name="Logger"/>
答案 0 :(得分:1)
您可以使用变压器将其设置为您想要的任何内容。 例如,对于xml类型:
<message-properties-transformer name="contentTypeTextXML">
<add-message-property key="Content-Type" value="text/xml" />
</message-properties-transformer>
或者您可以使用 delete-message-property 处理器
将其删除答案 1 :(得分:0)
我有类似的问题;每当我将Mule消息的有效负载转换为JSON时,Mule运行时会自动将Mule消息的MIME类型设置为 application / json 。当 http:request 组件看到MIME类型为 application / json 时,它会设置 内容类型 HTTP请求>也是 application / json 。不幸的是,我需要调用的RESTful服务只识别 text / x-json 的 内容类型 。虽然Mule消息的MIME类型设置为 application / json ,但我无法手动覆盖 内容类型 > HTTP:请求;它只是忽略了 内容类型 的 http:header 设置。我通过添加表达式组件来覆盖Mule消息的 SimpleDataType 中的MIME类型集来解决这个难题,然后我终于能够成功覆盖 < http:request 组件中的em> content-type 是我需要的类型,如下所示:
...
<expression-component doc:name="Override default DataType"><!CDATA[
message.getDataType().setMimeType('*/*');
]]></expression-component>
<http:request config-ref="HTTP_Request_Configuration" path="search.do" method="POST" doc:name="Call RESTful service to perform search">
<http:request-builder>
...
<http:header headerName="content-type" value="text/x-json"/>
...
</http:request-builder>
</http:request>
...