【问题标题】:Unable to set Content-Type on SOAP Request无法在 SOAP 请求上设置 Content-Type
【发布时间】:2023-03-28 14:41:01
【问题描述】:

我正在向服务器发送 SOAP 调用,而服务器坚持使用特定的 Content-Type。我正在尝试设置内容类型,但它似乎没有正确传输。

我收到服务器的响应:

415 无法处理消息,因为内容类型为 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml; 字符集=utf-8'

我的粗略代码:

val soapConnectionFactory = SOAPConnectionFactory.newInstance()
val soapConnection = soapConnectionFactory.createConnection()
val url = "https://secure.com"

val messageFactory = MessageFactory.newInstance()
val soapMessage = messageFactory.createMessage()

// (create envelope)

val headers = soapMessage.mimeHeaders
headers.setHeader("Content-Type", "application/soap+xml; charset=utf-8")

soapMessage.saveChanges()

val soapResponse = soapConnection.call(soapMessage, url)
soapConnection.close()

通过调试,内容类型似乎已正确设置为soapConnection.call()。有什么想法吗?

【问题讨论】:

    标签: java soap kotlin


    【解决方案1】:

    您正在创建一个默认的 MessageFactory:

    val messageFactory = MessageFactory.newInstance()
    

    正如文档所说的这种方法

    创建一个作为默认实现 (SOAP 1.1) 实例的新 MessageFactory 对象

    SOAP 1.2 消息内容类型是“application/soap+xml”,而 SOAP 1.1 是“text/xml” (http://www.w3.org/TR/soap12-part0/#L4697)。

    尝试创建一个提供 SOAP 1.2 作为协议的消息工厂实例

    val messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2016-02-27
      • 2015-05-05
      • 2012-11-02
      • 2012-05-27
      相关资源
      最近更新 更多