问题标签 [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.

0 投票
2 回答
67322 浏览

java - 如何在 JAX-WS Web 服务上引发自定义错误?

如何在 JAX-WS Web 服务上抛出自定义的 soap 错误?如何指定肥皂故障的faultCode,faultString和?detail是否可以设置detailas bean 的值而不是 a String

请注意,我正在使用代码优先方法进行开发。

0 投票
1 回答
572 浏览

wcf - 为什么在某些情况下会加密 WCF SoapFault 响应?

我正在创建一个 WCF Web 服务,其请求/响应应该只签名。为此,在我设置的 ServiceContract 属性上

这行得通。

由于要求,一些 SoapFaults 应该从服务中抛出;两种类型的 SoapFaults:

  • 申请相关
  • 与 WS-Addressing 相关(例如缺少 MessageID)

为此,我使用了处理 SoafFaults 的常规方法:创建一个 IErrorHandler,其中使用 MessageFault.CreateFault 创建一个 Message 实例。

几乎所有返回的 SoapFaults 都没有加密(这对我来说没问题),我的问题是为什么那些带有 action="http://www.w3.org/2005/08/addressing/fault" 或 " http:// www.w3.org/2005/08/addressing/soap/fault “被加密了吗?

0 投票
2 回答
4436 浏览

java - SOAPFaultException.getFault().getDetail() 为空

我正在使用 JAX WS 2.0 调用 SOAP Web 服务。如果出现错误,我会收到以下响应:

如您所见,有用的错误在详细节点中:

在我的客户端中,我得到一个具有 SOAPFault 对象的 SOAPFaultException。SOAPFault 对象似乎缺少我在上面发布的节点。SOAPFaultException.getFault().getDetail() 为空。但是,它具有包括soap:Reason 在内的所有其他节点。知道为什么它缺少详细节点吗?

谢谢。

0 投票
0 回答
459 浏览

wcf - WCF 真的尊重 WS-Addressing Soap Faults 的标准吗

我感兴趣的是Web 服务寻址 1.0 - SOAP 绑定中指定的预定义错误是否由 WCF 处理。

例如,如果操作不匹配(在 6.4.1.6 wsa:ActionMismatch 标准中指定),它是否会以“wsa:ActionMismatch”SoapFault 响应。或者它是否响应带有 subcode="wsa:MessageAddressingHeaderRequired" 的 SoapFault 来响应任何缺少的 ws-addressing 标头(在标准中指定在 6.4.2 Message Addressing Header Required 中)?

基于这些标准,这样的 SoapFault 应该如下所示:

我很好奇需要进行哪些配置才能响应此类 SoapFault 消息。

0 投票
4 回答
12764 浏览

xml - 致命错误:未捕获的 SoapFault 异常:[HTTP] 获取 http 标头时出错

我正在尝试使用 XML 输出“Hello World”,但在我的 php 页面中出现以下异常:

致命错误:未捕获的 SoapFault 异常:[HTTP] Error Fetching http headers in C:\wamp\www\Web_Service\SampleXML\index.php:4 堆栈跟踪:
#0 [内部函数]:SoapClient->_ doRequest('<? xml version="...', 'http://localhos...', 'urn:localhost-s...', 1, 0)
#1 [内部函数]: SoapClient->
_call('getHelloWorld' , Array)
#2 C:\wamp\www\Web_Service\SampleXML\index.php(4): SoapClient->getHelloWorld()
#3 {main} 在 C:\wamp\www\Web_Service\SampleXML\index.php 中抛出在第 4 行

索引.php

服务.wsld

肥皂-server.php

我错过了代码中的某些内容吗?

0 投票
1 回答
319 浏览

asp.net - WCF SOAP 错误类型不正确

首先,这是我的设置:

  • .Net 4.0 ASP.Net 应用程序
  • WCF 服务,带有 basicHttpBinding (soap 1.1)
  • 参考类是使用 svcutil 生成的,带有选项 /useSerializerForFaults; WSDL 定义所有操作,并提供指向 types.xsd 和 types_fault.xsd 文件的链接。仅供参考,WSD 和 XSD 文件对于许多应用程序都很常见,因此我无法修改它们(当然,除非存在一些重大的验证错误)

当我向客户端发送 SOAP 故障时,我的问题就出现了:对于故障详细信息,我无法访问代码中的正确类型,因此客户端无法处理此故障。

以下是 WSDL 的摘录,供您理解:

例如,当我发回一个响应(没有发生错误)时,我可以使用CreateScheduledWorkResponse元素,并正确填写它;但是当发生FaultException时,我只能发回CreateScheduledWorkFaultMessage(而不是 CreateScheduledWorkFault)。并且客户端无法处理此标签...

换句话说,代码中没有 CreateScheduledWorkFault 类型。

--> 我怀疑使用 svcutil 从 WSDL 和 XSD 生成代码时出现问题,因为我无法访问代码中所需的类型。

我以这种方式使用 svcutil:

svcutil /useSerializerForFaults CSW.wsdl CSW.xsd CSW_Fault.xsd

感谢您的帮助,如果您需要更多详细信息,请不要犹豫。

鲍里斯

0 投票
0 回答
266 浏览

wcf - IErrorHandler 接口让我感到困惑

我创建了一个实现 IErrorHandler 和 IServiceBehavior 的类。我将行为添加到我的 ServiceHost 并运行它。

我开始尝试了解 IErrorHandler 的原因是因为我不得不将所有与回调通道接口的服务代码包装在 try catch 语句中,并且想知道是否有一种全局方法来捕获异常。

好吧,从我在 StackOverflow 上读到的内容,我看到这确实是我想要的东西。

然而,在执行过程中,这让我非常困惑。如果我有一个执行以下操作的合同方法......

如果客户端在我的服务器上并且他从地球表面掉下来并且通道出现故障,我的服务器似乎需要一段时间才能意识到通道出现故障。即使我订阅了 ICommunicationObject 的事件,服务器似乎也需要一段时间才能意识到通道出现故障。例如,如果有人正在发送消息并且有人断开连接,并且同时正在传播一条消息。

现在,我有另一种方法,基本上定期 ping 客户端以确定它们是否仍然存在,因此我可以将它们从userChannel字典中删除。

IErrorHandler 究竟应该如何帮助我?即使它发现错误,它似乎也不能完全帮助我的服务崩溃。因为我的服务无法以超快的速度 ping 我的客户,所以有时一条消息似乎会在上一条引发异常的消息之后立即进入(我正在测试这个)。它似乎已经处理了第一个,但是第二个抛出了另一个没有被捕获的异常,我的服务崩溃了,因为服务器试图与一个有故障的通道通信。现在,我的服务确实会清理那些故障通道,但它会定期清理。

我希望通过实现 IErrorHandler 我可以避免将所有方法包装在 try{}catch{} 块中......但似乎我仍然必须检查我是否正在与故障通道进行通信?

或者,也许我只是在不正确地使用 IErrorHandler 并认为它应该做不应该做的事情。我是否应该让我的服务实现它,并将自己作为 IServiceBehavior 注入到 Servicehost 中?然后在我的 HandleError() 方法中从我的客户列表中删除频道?这似乎有点混乱,因为我将 WCF 管道的东西放在我的服务类中,但这是我能想到的让异常代码本身从回调列表中删除通道的唯一方法。

我正在尝试大量阅读,因为我是新手,但 WCF 中的错误处理世界似乎令人生畏。

即使我尝试删除通道,因此它不会通过订阅故障事件在服务上调用,但它的工作速度不够快,并且仍然会引发服务器似乎无法从 IErrorHandler 中恢复的异常。

例如,当用户第一次连接时,我订阅了事件。

我是否只需要进入所有方法并检查通道是否关闭或出现故障,并将所有内容包装在 try/catch 块中以删除引用并通知客户?

0 投票
1 回答
8407 浏览

soap - 解决 SoapFault 异常:[HTTP] 无法解析 URL

我在一个项目上工作,该项目使用由 PHP 和 2 个本机智能手机应用程序(ios 和 android)查询的基于 Soap 的 Web 服务,在 Web 服务开发团队进行了一些编辑之后,PHP 方面的事情被打破了,但智能手机应用程序没有问题。

这是一个重现问题的简单脚本

我收到以下错误:

TPGetLocalisationVersion 方法存在且参数正确。这段代码几天前曾经工作过。

我还可以使用 wget 从 PHP Web 服务器获取 wsdl。

我用一些在线工具测试了 WSDL 文件,看起来还可以。

有什么建议可以调试吗?我确定 WSDL 没有被缓存,因为我在专用服务器上并且在 php.ini 中完全禁用了 WSDL 缓存

0 投票
2 回答
8089 浏览

web-services - Spring Integration 入站 web 服务 wsdl 生成

我正在尝试评估 Spring Integration,特别是对通过服务激活器将基于 POJO 的简单服务公开到基于 SOAP 的 Web 服务感兴趣。目前我被困在生成动态 wsdl 时遇到问题。WSDL 未加载,浏览器显示 404 错误。我尝试在本地访问以下网址

下面是配置

入站网关-config.xml

EmployeeService 只是一个 pojo 类,而 EmployeeServiceResponder 是一个服务激活器,它调用服务类上的方法。

用于动态 wsdl 生成

spring-ws-config.xml

web.xml

请让我知道还缺少什么,以便通过 SI 将此服务作为 Web 服务访问。

此外,当我尝试使用 WebService 模板访问服务时,我得到了 SOAPFAULT

提前致谢-MS

0 投票
1 回答
942 浏览

php - 使用 SoapFault 忽略 PHP SoapServer addSoapHeader

我编写了一个接受基本身份验证凭据的 PHP SOAP 服务,如http://www.whitemesa.com/soapauth.html中所述。我通过在实例BasicAuth的处理程序类中定义一个方法来做到这一点。SOAPServer这一切都很好。

但是,当身份验证由于某种原因失败(用户名不正确,BasicAuth请求中没有标头)时,我想BasicChallenge在我的响应中包含一个标头,如下所示:

以下代码不起作用(标头未添加到响应中)。

调用$soapServer->fault()而不是throw new SoapFault没有任何区别。

我尝试自己构建 Fault 对象,并将其作为常规响应返回,但我无法让 PHP 发送格式正确的响应。

提前致谢。