【问题标题】:Cannot create message: incorrect content-type for SOAP version. Got text/xml; charset=UTF-8, but expected application/soap+xml无法创建消息:SOAP 版本的内容类型不正确。得到文本/xml; charset=UTF-8,但预期应用程序/soap+xml
【发布时间】:2011-11-11 09:34:23
【问题描述】:

我正在尝试使用 eBay 提供的大型商家服务 API 将文件上传到 eBay。

他们提供了一个相同的 sample.jar 文件。当我们在命令提示符下执行 .jar 文件时,它似乎工作正常,但是当我尝试将其源代码集成到我的网络应用程序中时,它给了我这个错误。我也尝试使用 Netbeans 创建一个 Web 服务客户端并尝试使用它,但它仍然给了我同样的错误。我还将 SOAP 版本从 1.1 更改为 1.2,但这似乎也不起作用。以下是完整的堆栈跟踪。

Nov 11, 2011 2:59:41 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl init
SEVERE: SAAJ0533: Cannot create message: incorrect content-type for SOAP version. Got text/xml; charset=UTF-8, but expected application/soap+xml
Nov 11, 2011 2:59:41 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl init
SEVERE: SAAJ0535: Unable to internalize message
Exception in thread "main" javax.xml.ws.WebServiceException: Couldn't create SOAP message due to exception: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
        at com.sun.xml.internal.ws.util.SOAPConnectionUtil.getSOAPMessage(SOAPConnectionUtil.java:83)
        at com.sun.xml.internal.ws.encoding.soap.client.SOAPXMLDecoder.toSOAPMessage(SOAPXMLDecoder.java:102)
        at com.sun.xml.internal.ws.protocol.soap.client.SOAPMessageDispatcher.receive(SOAPMessageDispatcher.java:440)
        at com.sun.xml.internal.ws.protocol.soap.client.SOAPMessageDispatcher.doSend(SOAPMessageDispatcher.java:260)
        at com.sun.xml.internal.ws.protocol.soap.client.SOAPMessageDispatcher.send(SOAPMessageDispatcher.java:139)
        at com.sun.xml.internal.ws.encoding.soap.internal.DelegateBase.send(DelegateBase.java:86)
        at com.sun.xml.internal.ws.client.EndpointIFInvocationHandler.implementSEIMethod(EndpointIFInvocationHandler.java:174)
        at com.sun.xml.internal.ws.client.EndpointIFInvocationHandler.invoke(EndpointIFInvocationHandler.java:108)
        at $Proxy28.createUploadJob(Unknown Source)
        at com.SwiftConnectV1.fileprocess.LMS.BulkDataExchangeActions.createUploadJob(BulkDataExchangeActions.java:138)
        at com.SwiftConnectV1.fileprocess.LMS.LMSClientJobs.createUploadJob(LMSClientJobs.java:154)
        at com.SwiftConnectV1.fileprocess.LMS.LMSSample.main(LMSSample.java:74)
Caused by: Couldn't create SOAP message due to exception: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
        at com.sun.xml.internal.ws.util.SOAPUtil.createMessage(SOAPUtil.java:154)
        at com.sun.xml.internal.ws.util.SOAPConnectionUtil.getSOAPMessage(SOAPConnectionUtil.java:78)
        ... 11 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
        at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:475)
        at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:278)
        at com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl.<init>(Message1_2Impl.java:61)
        at com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl.createMessage(SOAPMessageFactory1_2Impl.java:62)
        at com.sun.xml.internal.ws.util.SOAPUtil.createMessage(SOAPUtil.java:152)
        ... 12 more
Caused by: com.sun.xml.internal.messaging.saaj.soap.SOAPVersionMismatchException: Cannot create message: incorrect content-type for SOAP version. Got: text/xml; charset=UTF-8 Expected: application/soap+xml
        at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:356)
        ... 16 more

【问题讨论】:

    标签: java soap struts ebay-api ebay-lms


    【解决方案1】:

    SAAJ0533:无法创建消息:SOAP 版本的内容类型不正确。得到文本/xml; charset=UTF-8,但应为应用程序/soap+xml

    根据异常消息,我说你搞混了。

    对于所有发送的 SOAP 消息,Content-type 标头应该是:

    • text/xml 用于 SOAP v1.1
    • application/soap+xml 用于 SOAP v1.2。

    首先检查这些,然后我的建议是尝试查看网络上发生了什么(例如Fiddler),然后比较您的网络应用程序与sample.jar 的不同之处。

    【讨论】:

    • 更改内容类型无效。我现在将尝试使用 Fiddler,谢谢。
    • 确保不要在 SOAP v1.2 的请求内容类型标头中发送 ';action=""'
    【解决方案2】:

    SAAJ0533:无法创建消息:SOAP 版本的内容类型不正确。得到文本/xml; charset=UTF-8,但应为应用程序/soap+xml

    实际上,我们收到此错误是因为 SaajSoapMessageFactory 是“手动”创建的,而不是作为 @Bean,所以它没有被 Spring 生命周期负责,也没有调用 afterPropertiesSet 方法。

    因此,请遵循以下示例和建议:

    希望对您有所帮助,

    【讨论】:

      【解决方案3】:

      让它工作,似乎我的 JDK 已损坏,我添加了所有外部 jar 文件以使其工作。升级到 Java 7,现在似乎工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-25
        • 2022-07-03
        • 2019-05-28
        • 2012-01-28
        • 1970-01-01
        • 2013-03-11
        • 1970-01-01
        • 2019-12-21
        相关资源
        最近更新 更多