将字符串/ XML请求作为text / xml传递给http出站

时间:2013-01-16 15:30:52

标签: xml mule

我有一个场景需要通过http:outbound调用Web服务。该服务仅接受text / xml。

但是在我的转换和转换之后,我将有效负载(xml)作为byte []或String。 当有效负载通过http:outbound向服务传递请求时,它将返回错误消息

Exception stack is:
1. Message contained MIME type "application/atom+xml" when "text/xml" was expected.     
Message payload is of type: byte[] (org.mule.api.MessagingException)

以下是我流程的一部分。

<mule-xml:xslt-transformer
        maxIdleTransformers="2" maxActiveTransformers="5"
        xsl-file="C:\EWS\MyProject\src\main\resources\xslt\XML_Repeater.xsl">
</mule-xml:xslt-transformer>

 <!-- <byte-array-to-string-transformer></byte-array-to-string-transformer>  -->

 <http:outbound-endpoint exchange-pattern="request-response" mimeType="text/xml"  
        address="http://sampleproj:9080/myservice/servlet/rpcrouter" />

如何将预期的mime-type传递给http:outbound?

2 个答案:

答案 0 :(得分:2)

添加:

<set-property propertyName="Content-Type" value="text/xml" />

http:outbound-endpoint之前。

答案 1 :(得分:0)

我不确定如何设置mime-types,但是你尝试使用<cxf:proxy-client>发送如下所示的soap请求。此外,您可能需要指定SoapAction以指定在web-servicve上调用哪个操作

<mule-xml:xslt-transformer
    maxIdleTransformers="2" maxActiveTransformers="5"
    xsl-file="C:\EWS\MyProject\src\main\resources\xslt\XML_Repeater.xsl">
</mule-xml:xslt-transformer>
<set-property propertyName="SOAPAction" value="http://operationToCall" />
<cxf:proxy-client payload="body" enableMuleSoapHeaders="false">
   <cxf:outInterceptors>
     <spring:bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
   </cxf:outInterceptors>
</cxf:proxy-client>
<http:outbound-endpoint exchange-pattern="request-response" mimeType="text/xml"  
    address="http://sampleproj:9080/myservice/servlet/rpcrouter" />