我有一个场景需要通过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?
答案 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" />