阻止 Mule 添加默认内容类型



如何防止Mule向HTTP响应添加默认内容类型?

目前,Mule 正在添加"文本/纯文本"内容类型。我的 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"/>

您可以使用转换器将其设置为所需的任何内容。例如,对于 xml 类型:

<message-properties-transformer name="contentTypeTextXML">
   <add-message-property key="Content-Type" value="text/xml" />
</message-properties-transformer>

或者您可以使用删除消息属性处理器将其删除

我有一个类似的问题;每当我将Mule消息的有效负载转换为JSON时,Mule运行时都会自动将Mule消息的MIME类型设置为application/json。 当 http:request 组件看到 MIME 类型的应用程序/json 时,它也会将 HTTP 请求的内容类型设置为 application/json 不幸的是,我需要调用的 RESTful 服务只识别了 text/x-json内容类型。当骡子消息的 MIME 类型设置为应用程序/json 时,我无法手动覆盖 http:request 使用的内容类型;它只是忽略了内容类型http:header 设置。 我通过添加一个表达式组件来解决这个难题,以覆盖Mule消息的SimpleDataType中设置的MIME类型,然后我终于能够成功地将http:request组件中的内容类型覆盖为我需要的类型,如下所示:

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

最新更新