Java SOAP消息内容类型
我使用maven wsimport和
Java 1.7生成了SOAP客户端代码.
WSDL是由客户提供的,我相信它是一个支持.NET的SOAP服务器. 在调用该服务后,我不断收到如下错误:
我试图通过自定义处理程序修改SOAPMessage类中的MimeHeader(我确实正确地将处理程序注册到链): MimeHeaders mimeHeaders = msg.getMimeHeaders(); mimeHeaders.removeAllHeaders(); mimeHeaders.removeHeader("Content-Type"); mimeHeaders.addHeader(HttpHeaders.CONTENT_TYPE,"text/xml; charset=utf-8"); 上面的代码似乎没有改变mimiHeaders里面的任何东西,vector对象似乎是不可变的…. 然后我手动创建了SOAP消息 MessageFactory newInstance = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); MimeHeaders he = new MimeHeaders(); he.addHeader("Content-Type","text/xml; charset=utf-8"); String ss = "<x:Envelope>xxxxx</x:Envelope>"; InputStream in = new ByteArrayInputStream(ss.getBytes(StandardCharsets.UTF_8)); SOAPMessage createMessage = newInstance.createMessage(he,in); createMessage.writeTo(System.out); context.setMessage(createMessage); msg.saveChanges(); 这次SOAPMessage本身的mimeHeader和Content-Type都设置为 但服务器仍然通过相同的错误415 application / soap xml不期望…… 我理解服务器似乎遵循SOAP 1.1这就是为什么它期望text / xml …但是当我创建工厂时我明确地将协议指定为1.1并手动设置mimeHeader.我真的很困惑 注意:使用SOAPUI或PostMan绝对没问题,只有在使用wsimport生成的java客户端时才会出现问题 解决方法
您应该首先尝试发现问题:在客户端或服务器上?
因此,我建议您添加以下JVM参数以转储HTTP请求详细信息. -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true 使用这个,你应该在控制台中看到类似的东西: ---[HTTP request - http://localhost:8780/soap/MyService]--- Accept: text/xml Authorization: Basic *****************== Content-Type: text/xml; charset=utf-8 SOAPAction: "xxxxx" User-Agent: JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e <?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">... 如果您确实看到Content-Type错误的正确值,毫无疑问:错误位于服务提供商一侧. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- datamapper – Doctrine2最佳实践,实体应该使用服务吗?
- JSP Request.getServerPort()方法:获取服务器的端口号
- java – 为什么我可以在没有显式转换的情况下为一个char变量
- java – HttpURLConnection conn.getRequestProperty返回nu
- 用C和JAVA分别创建链表的实例
- java – AspectJ Gradle配置
- lambda – 使用Java 8流迭代两个列表
- Java Swing:扩展DefaultComboBoxModel并覆盖方法
- Java List转换成String数组几种实现方式详解
- java – JAXB maven插件不生成类