问题标签 [soapfault]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
soap - 如何获取SOAPHandler的handleFault方法来区分请求和响应
我正在尝试使用SOAPHandler
拦截服务调用,我需要区分方法request
和response
内部handleFault
。问题是当请求或响应无效并且handleFault
方法被调用时,我无法知道它是哪一个。MessageContext.MESSAGE_OUTBOUND_PROPERTY
没有帮助,在true
这两种情况下handleFault
java - com.sun.xml.internal.ws.fault.SOAPFaultBuilder 的 NoClassDefFoundError
我们在现场环境中的 Web 服务客户端最近遇到了异常:
我在网上做了很多搜索,包括 StackOverflow 上的一些帖子:
使用 CXF 捕获 Web 服务异常:NoClassDefFoundError: SOAPFaultBuilder
无法初始化类 com.sun.xml.internal.ws.fault.SOAPFaultBuilder
java.lang.NoClassDefFoundError:无法初始化类 com.sun.xml.internal.ws.fault.SOAPFaultBuilder
我的理解是我们的客户端从服务器收到了一个 SOAP 错误,它缺少一些 jar 文件。所以我试图通过首先重新创建它来解决这个问题。
我在 Eclipse 中创建了一个简单的 Web 服务服务器项目,它有一个 Web 方法会抛出一个由@WebFault
. 然后我创建了一个使用 Web 方法的简单 Web 服务客户端项目。客户端项目的类路径中没有任何额外的库/jar;它只有 JRE。令我惊讶的是,它没有抛出 NoClassDefFoundError 异常!相反,我得到了javax.xml.ws.soap.SOAPFaultException
我在服务器端定义的。
该类SOAPFaultBuilder
确实在 JRE 的 rt.jar 中。因此,我创建的简单 Web 服务项目可能只是按其应有的方式工作。但是,我们live环境中的web服务客户端怎么会抛出NoClassDefFoundError
异常呢?该项目的类路径中肯定有 rt.jar。
谁能解释一下这个问题?如果它缺少一些 jar 文件(来自 jaxws RI 或 Apache CXF 或其他),为什么我创建的超级简单客户端没有抛出错误?直播环境和我的本地环境都使用Java7u51。
python - 如何在 Spyne 中使用结构化详细信息元素引发 SOAP 错误?
Spyne 手册指出,使用 Spyne 创建 SOAP 错误的正确方法是引发(spyne.model.fault.Fault
或您自己的子类)的实例:
我试图理解为什么它是子类ComplexModelBase
。我最初的假设是我在子类中声明了我想要进入 SOAP Fault 元素的<detail>
元素Fault
,如下所示:
但是,当实际引发这个异常时,看起来我必须将一个普通的 dict 传递给detail
构造函数的参数。
detail
用结构化数据集填充的最佳实践是什么?我什至在我的Fault
子类中声明这个结构吗?
如果是,我该如何填写?如果不是,为什么要Fault
subclass ComplexModelBase
?
.net - 将第三方异常传递给 WCF 服务调用者的更好模式?
我正在开发一个使用一些第三方服务的 WCF 解决方案。大多数用户输入和操作都将由第三方服务验证,这意味着我的服务只有在收到第三方异常时才知道出现问题。
我需要设置一些东西来翻译并将此类异常传递给我自己的服务的调用者,因为原始异常的消息对于我的调用者来说太技术性了,尽管我确实希望他们知道出了什么问题。
我正在考虑的解决方案是使用 Microsoft 企业库异常处理,使用自定义处理程序,捕获第三方异常,并用更友好的消息(来自映射表或类似的)替换原始消息以及分配我的错误代码,然后抛出 SOAP 错误。第三方异常的完整列表是未知的,但我确实知道其中的大部分——对于未知的,我打算用通用消息和错误代码替换,并记录原始异常。
我认为这个解决方案会起作用,但可能有更好的方法,因此发布这个问题以寻求您的专业知识。请分享你的想法。我的主要目标是优雅地处理第三方异常(易于维护处理代码)和翻译消息(易于配置的翻译设置)。
java - 没有 CXF/Spring-ws 的骆驼返回简单的 SoapFault
我创建了一个代理骆驼,它接受 SOAP(通过 HTTP)和 RESTful 请求并将它们转发到正确的 Web 服务。Camel 不知道消息结构,它不知道 WSDL 或任何东西,它只是根据 http 标头知道它是否是 SOAP。没有 CXF 端点。
此外,它还进行了一些处理。那里可能会发生异常,例如,当找不到服务或 url 无效时。有没有一种简单的方法可以直接从这个骆驼返回一个有效的 SOAPFault?我试图编写一个简单的处理器,称为 onException。它看起来像这样:
应该将任何异常转换为 SOAPFault 的处理器如下所示
但现在我不明白我将如何编组它,响应如下所示:
(“未经授权”是实际消息)
PS:我之前使用过数据格式 SOAP,但如前所述,我在这个 Camel 中没有任何 ServiceInterface。
wso2 - 如何处理 wso2 输出序列中的肥皂故障
我无法在我的输出序列中将 SoapFault 转换为 JSON,请帮助。
这是肥皂响应:
这是我的 REST API:
但我遇到了一个例外:
java - SOAP 错误响应也在 SOAP 正文中显示请求
当我们用错误的数据请求 SOAP Web 服务时,错误消息正常出现,但随着请求的数据也出现在 SOAP 正文下,我怎样才能只让错误部分出现在 SOAP 正文下?我不希望 SOAP 正文中的请求数据以及错误详细信息
php - PHP 中的 SOAP 客户端请求在 4MB 或更大时失败
我花了将近整整两天的时间试图解决这个问题,但无济于事。任何帮助是极大的赞赏。
我正在尝试使用 php 在 SoapClient 中的构建在 PHP 中发出 Soap 请求。我已经验证,尝试发送信封大小小于 4MB 的请求效果很好。在这种情况下,被调用服务器和我的客户端之间的通信没有问题。一旦我将信封的大小小费超过 4MB,我的 php 实例需要 1-2 分钟的时间来引发 SoapFault,其中错误消息是“错误获取 HTTP 标头”。我在 php.ini 中将 max_post_size 和 memory_limits 设置为 150M,并且我的 IIS 请求限制设置为 500MB。
我已经验证,如果我不使用 php 发出 SOAP 请求,我可以立即完成我的请求和响应链,其正文超过 4MB,所以我觉得我已经将其缩小到 php/SoapClient问题。
如果有人有任何想法,我将不胜感激。我不确定此时还可以尝试什么。
谢谢!
菲尔
web-services - SOAP 错误没有命名空间
我有几个自定义错误,其中一个在收到响应时如下:
我被要求删除故障中的名称空间(xmlns)(对于所有故障),即:
正如这些线程中提到的,在 xsd 文件中,我尝试更改:
至
并重新生成了课程,但我仍然得到 ns. 我该如何进行?
生成的故障类 NonExistingEntityFault.java
xsd是:
web-services - 在 SoapFault 之后继续 Spring 集成流程
我们的应用集成流程定义为 splitter -> ws gateway -> aggregator splitter将请求拆分成一个账号列表;以便为每个帐号启动一个 Web 服务调用,并将来自多个 Web 服务调用的响应聚合在聚合器中。拆分器和 ws 网关之间的通道由调度程序“commonj WorkManagerTaskExecutor”定义,以便每个 Web 服务调用在不同的线程。
如果至少有一些 Web 服务调用正确响应;即使所有其他调用导致 SoapFault;我们需要通过使用来自成功响应的数据以及引用来自故障响应的错误消息的警告消息来处理该场景。
问题是 ws 网关中定义的 FaultMessageResolver 的 resolveFault() 方法不返回任何内容,并且如果至少有一个并行 Web 服务调用失败,则控件永远不会到达聚合器。有什么办法可以处理这种情况。