【问题标题】:SOAP response showing error-SAAJ JavaSOAP 响应显示错误-SAAJ Java
【发布时间】:2017-11-26 11:21:20
【问题描述】:

我有一个生成 SOAP 请求的功能。我能够在 SOAP UI 工具中运行的请求及其获取。

我正在创建这样的 SOAPMessage

MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.removeAllHeaders();
headers.addHeader("Content-Type", "text/xml");
SOAPPart soapPart = soapMessage.getSOAPPart();

当我打电话时

SOAPMessage soapResponse = soapConnection.call(soapMessage, url);

得到这个错误:

严重:SAAJ0537:内容类型无效。可能是错误消息而不是 SOAP 消息 com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无效的内容类型:文本/html。这是错误消息而不是 SOAP 响应吗?

你能帮忙解决一下吗? 这是否意味着无法建立连接??

【问题讨论】:

    标签: java xml web-services soap saaj


    【解决方案1】:

    SOAP 消息的 HTTP Content-Type 标头最有可能是 application/soap+xml(请参阅 XML SOAP)。

    您得到的异常源自 SOAP 服务容器,它说 Content-Type 标头的值是 text/html。我认为 SOAP UI 为您设置了正确的请求标头值。

    您的代码发送的标头值似乎是默认值。您应该检查您的服务器的预期 Content-Type 值是什么,并使用您的框架/库进行设置。

    【讨论】:

    • 我像这样添加 MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); MimeHeaders 标头 = soapMessage.getMimeHeaders(); headers.removeAllHeaders(); headers.addHeader("Content-Type", "text/xml"); SOAPPart soapPart = soapMessage.getSOAPPart();
    • 这是正常的。您能否添加有关您正在使用的 SAAJ 实现(或应用程序服务器)的信息。似乎与配置有关。
    • 它是 eclipse 上的独立 java 代码。请查看 SOAP 实现的代码
    • 这里的情况不像你的那样 100%,但我们发现Content-Type 是由 SAAJ 通过 SOAP 协议自动设置的。似乎这是唯一重要的事情:stackoverflow.com/questions/47600370/…
    • 这更让我相信您的问题与框架或环境配置有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多