我正在通过 jax ws 客户端代码(从 wsdl 生成)调用一个肥皂网络服务。但是该服务使用“Content-Type:text/html”发送响应,因为 jax-ws 实现需要“text/xml”类型。Web 服务人员不会更改响应标头。
例外是:
com.sun.xml.internal.ws.client.ClientTransportException:服务器发送 HTTP 状态代码 200:在 com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:266) 处确定~[?:1.8.0_171] 在 com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:217) ~[?:1.8.0_171] 在 com.sun.xml。 internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:130) ~[?:1.8.0_171] at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:124 ) ~[?:1.8.0_171]
还尝试了 Saaj 实现。它还要求响应 Content-Type 标头为 text/xml。这是 saaj 的例外情况:
原因:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无效的内容类型:文本/html。这是错误消息而不是 SOAP 响应吗?在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 在 com.sun.xml.internal.messaging.saaj.soap.MessageImpl.identifyContentType(MessageImpl.java:655) ~[?:1.8. 0_171] 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process (AbstractProtocol.java:790) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49 )
有没有办法让 jaxws 忽略响应头并继续解析?