java - Web 服务调用返回 "Fault string, and possibly fault code, not set"

标签 java web-services soap-client

我有一个调用 Web 服务的 Java 应用程序 (A)。

1)然后我有另一个使用 A jar 的应用程序 (B)。 调用成功,返回需要的数据。

2)然后我有一个也使用A jar 的网络应用程序。 在这种情况下,当从 A 应用程序调用 Web 服务方法时,会引发异常。

由于执行 webservice 调用的类在这两种情况下是相同的,所以我不确定问题出在哪里。 Web 服务位于 https 服务器上。但我使用凭据进行身份验证。

我认为也许应该在网络应用程序中设置一些东西,但我不知道是什么..

异常(exception)情况是:

09:21:48.009 [http-nio-8084-exec-33] WARN  o.a.cxf.phase.PhaseInterceptorChain - Interceptor for {http://www.myserver.com/ci}ci2#{http://www.myserver.com/ci}GetCertPath has thrown exception, unwinding now
java.lang.UnsupportedOperationException: null
    at java.util.AbstractMap.put(AbstractMap.java:209) ~[na:1.8.0_92]
    at org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor.setSoapAction(SoapPreProtocolOutInterceptor.java:122) ~[cxf-rt-bindings-soap-2.7.16.jar:2.7.16]
javax.xml.ws.soap.SOAPFaultException: Fault string, and possibly fault code, not set
    at org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor.handleMessage(SoapPreProtocolOutInterceptor.java:63) ~[cxf-rt-bindings-soap-2.7.16.jar:2.7.16]
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:158)
    at org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor.handleMessage(SoapPreProtocolOutInterceptor.java:47) ~[cxf-rt-bindings-soap-2.7.16.jar:2.7.16]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) ~[cxf-api-2.7.16.jar:2.7.16]
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:572) [cxf-api-2.7.16.jar:2.7.16]
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:481) [cxf-api-2.7.16.jar:2.7.16]
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382) [cxf-api-2.7.16.jar:2.7.16]
    at com.sun.proxy.$Proxy318.getCertPath(Unknown Source)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335) [cxf-api-2.7.16.jar:2.7.16]
..... more lines here :) .....
    at java.util.AbstractMap.put(AbstractMap.java:209)
    at org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor.setSoapAction(SoapPreProtocolOutInterceptor.java:122)
    at org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor.handleMessage(SoapPreProtocolOutInterceptor.java:63)
Fault string, and possibly fault code, not set
    at org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor.handleMessage(SoapPreProtocolOutInterceptor.java:47)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:572)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:481)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:136)
    ... 59 more

有什么想法吗?

谢谢。

编辑: 是否必须设置任何 header ?在情况 1 中连接时,没有任何特定设置并且它正在工作。

最佳答案

好的,我已经找到问题了。请求应包含内容类型。奇怪的是它在第一种情况下没有抛出异常......

我添加了 Content-Type: application/soap+xml; charset=utf-8 并且 Web 应用程序也正在运行。

据我发现,javax.xml.ws.soap.SOAPFaultException:错误字符串,可能还有错误代码,未设置主要与缺少的内容类型有关..

关于java - Web 服务调用返回 "Fault string, and possibly fault code, not set",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390319/

相关文章:

php - 以编程方式根据 Salesforce 检查 Enterprise WSDL

java - RESTful Web 服务加载 MYSQL 文件中的数据

java - SOAP Java 1.4.2

java - 等待一个对象被初始化

java - 禁用 IntelliJ 的运行时可空性验证

java - 验证 CXF HttpAsyncClient 对 use.async.http.conduit 上下文属性的使用

java - maven tomcat部署soap web服务错误

PHP SOAP 客户端教程/推荐?

java - 在 Pod 意外关闭时运行退出逻辑的最佳方法

java - 升级到 Gradle 包装器到 7.0.2 和 JDK 11 后,Android 版本构建失败