我有一个基于Spring Boot 1.5的应用程序Spring WS,SAAJ-impl-1.3.28.jar。它与内容类型“text/xml”一起工作正常,购买抛出以下内容类型异常:application/xml。
“错误 - a.c.c.C.[.[.[.[messageDispatcherServlet] : Servlet.service() for servlet [messageDispatcherServlet] 在路径 [] 的上下文中抛出异常 [请求处理失败;嵌套异常是 org.springframework.ws.soap .SoapMessageCreationException:无法从InputStream创建消息:无效Content-Type:application/xml。这是一条错误消息而不是 SOAP 响应吗?嵌套异常是 com.sun.xml.messaging.saaj.SOAPExceptionImpl:无效的 Content-Type:application/xml。 SOAP 响应?] 以及根本原因 com.sun.xml.messaging.saaj.SOAPExceptionImpl:无效的内容类型:application/xml。这是错误消息而不是 SOAP 响应吗?”
我尝试通过扩展 Servlet Filter 中的 HttpServletResponseWrapper super.setContentType() 来强制将内容类型更新为“text/xml”,但没有帮助。如何绕过或强制更新内容类型以满足 SAAJ?
我的理解是,该错误是由传入请求的内容类型不正确触发的。在这种情况下,如果您想在 servlet 过滤器中更改它,您可以使用
HttpServletRequestWrapper
并覆盖 getContentType()
以返回所需的内容类型。
话虽如此,
application/xml
显然不是 SOAP 1.1 的正确内容类型,您应该尝试修复客户端。
我在 SOAP 中也遇到过类似的错误。通过将内容类型设置为
解决了这个问题"application/soap+xml; charset=UTF-8"