我正在向服务器发送 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()
Run Code Online (Sandbox Code Playgroud)
通过调试,内容类型似乎已正确设置为soapConnection.call()。有任何想法吗?
小智 5
您正在创建一个默认的 MessageFactory:
val messageFactory = MessageFactory.newInstance()
Run Code Online (Sandbox Code Playgroud)
正如文档所述
创建一个新的 MessageFactory 对象,该对象是默认实现 (SOAP 1.1) 的实例
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)
Run Code Online (Sandbox Code Playgroud)