1

Mule がデフォルトの content-type を 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"/>

4

2 に答える 2

1

トランスフォーマーを使用して、任意の値に設定できます。たとえば、xml タイプの場合は次のようになります。

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

または、 delete-message-propertyプロセッサで削除できます

于 2013-09-13T11:56:42.453 に答える
0

同様の問題がありました。Mule メッセージのペイロードを JSON に変換すると、Mule ランタイムは自動的に Mule メッセージの MIME タイプをapplication/jsonに設定します。http:requestコンポーネントがapplication/jsonの MIME タイプを検出すると、HTTP リクエストのcontent-typeもapplication/jsonに設定します。残念ながら、呼び出す必要のある RESTful サービスは、 text/x-json の content-type しか認識しませんでし。Mule メッセージの MIME タイプはapplication/jsonに設定されていましたが、 http:requestで使用されるcontent-typeを手動でオーバーライドできませんでした; content-typeのhttp:header設定を単に無視しました。Mule メッセージのSimpleDataType内に設定された MIME タイプをオーバーライドする式コンポーネントを追加することで、このジレンマを解決し、最終的にhttp:requestコンポーネント内の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>
    ...
于 2016-04-01T23:57:04.837 に答える