阻止Mule添加默认内容类型

时间:2013-09-13 04:07:05

标签: http mule content-type

如何阻止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"/>

2 个答案:

答案 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>
    ...