通过WSO MI发送请求时Content-Type无法设为text/xml求助
WSO MI强制设置Content-Type为text/xml的解决方案
问题场景
通过WSO MI发送请求时,期望请求头Content-Type为text/xml,但实际返回的是application/xml。
Wire日志记录:
DEBUG {header} - >> "Content-Type: application/xml; charset=UTF-8[\r][\n]"
已尝试以下两种配置,均未生效:
1. <header name="Content-Type" scope="transport" value="text/xml"/> 2. <property name="ContentType" scope="axis2" value="text/xml"/>
可行解决步骤
1. 同时指定带charset的transport头和axis2属性
WSO MI处理XML负载时可能自动覆盖Content-Type,添加charset参数可提升配置优先级,同时设置transport头和axis2属性:
<property name="ContentType" scope="axis2" value="text/xml; charset=UTF-8"/> <header name="Content-Type" scope="transport" value="text/xml; charset=UTF-8"/>
2. 禁用自动类型协商与分块传输
添加axis2属性关闭分块传输并明确HTTP方法,避免系统自动调整Content-Type:
<property name="DISABLE_CHUNKING" scope="axis2" value="true"/> <property name="HTTP_METHOD" scope="axis2" value="POST"/> <property name="ContentType" scope="axis2" value="text/xml; charset=UTF-8"/> <header name="Content-Type" scope="transport" value="text/xml; charset=UTF-8"/>
3. 确认中介流执行顺序
确保上述配置代码在call或send mediator之前执行,防止后续中介逻辑覆盖已设置的头信息和属性。
4. 全局修改axis2.xml消息格式化器(谨慎操作)
若需全局统一XML消息的Content-Type,找到MI安装目录下的conf/axis2/axis2.xml,修改XMLFormatter的默认配置:
<messageFormatter contentType="text/xml" class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
注意:此修改会影响所有XML类型的请求,需根据业务场景评估后操作。
内容的提问来源于stack exchange,提问作者Wajih Haider
相关产品推荐
相关产品推荐

