第四十九章 解决 IRIS 中的 SOAP 问题 - 发送消息时出现问题

第四十九章 解决 IRIS 中的 SOAP 问题 - 发送消息时出现问题

如果在向 IRIS Web 服务或客户端发送或接收 SOAP 消息时遇到问题,请考虑以下常见场景列表:

  • SOAP 消息可能包含极长的字符串或二进制值,超出字符串长度限制。在这种情况下, IRIS 会抛出以下错误之一:
    • <MAXSTRING> 错误
    • 数据类型验证错误(也可能有其他原因):
ERROR #6232: Datatype validation failed for tag your_method_name ...

当向导读取 WSDL 时,它假定任何字符串类型的输入或输出都可以在 IRIS 中表示为 %String。同样,它假定任何 XML 类型为 base64Binary 的输入或输出都可以在 IRIS 中表示为 %xsd.base64BinarWSDL 中没有信息来告知 SOAP 向导此输入或输出可能超出字符串长度限制。

  • Web 服务或客户端可能会收到 WS-Security 标头,但尚未配置为识别它们。这可能会导致类似以下的一般错误:
<ZSOAP>zInvokeClient+269^%SOAP.WebClient.1

此类错误也可能有其他原因。如果收到此类错误,请首先检查消息是否包含 WS-Security 标头;如果是,请将以下内容添加到 Web 服务或客户端并重新编译:

Parameter SECURITYIN="REQUIRE";

此外,如果 生成了安全策略(在配置类中),可能需要编辑该策略以提供缺失的详细信息;请参阅编辑生成的策略。如果不这样做,可能会收到如上所述的一般错误。

  • 根据 SOAP 规范,Web 服务或客户端可能需要比应有的更具体的消息格式。(对于 IRIS 中没有的服务或客户端,可能会发生这种情况。) 遇到过以下情况,此处按(大约)最常见到最不常见的顺序列出:

    • Web 服务或客户端要求消息为消息中的所有元素指定 xsi:type 属性。要指定此属性的使用,请参阅控制 xsi:type 属性的使用,该属性适用于 Web服务和客户端。
    • 对于空字符串值,Web 服务或客户端需要空元素(而不是省略元素)。要解决此问题,可以控制空字符串参数的形式,请参阅控制空字符串参数的形式,该内容适用于 Web 服务和客户端。
    • Web 服务或客户端需要特定的命名空间前缀。 IRIS 不提供指定命名空间前缀的方法。

    但是,对于 SOAP 信封,您可以指定要使用的前缀。请参阅指定 SOAP 信封前缀,它适用于 Web 服务和客户端。

    • Web 客户端要求引用 SOAP 操作。要解决此问题,请参阅引用 SOAP 操作(仅限 SOAP 1.1)。

    • Web 服务或客户端要求在每个 SOAP 消息的开头添加 BOM(字节顺序标记)。由于 SOAP 消息采用 UTF-8 编码,不存在字节顺序问题,因此不需要 BOM。请参阅向 SOAP 消息添加字节顺序标记,该内容适用于 Web 服务和客户端。

    这些问题的症状取决于所使用的第三方产品。

  • Web 服务或客户端可能不符合 WSDL。对于 IRIS Web 服务或客户端来说,这种情况不应该发生,但在其他情况下可能会发生。InterSystems 已经看到过以下情况:

    • 消息中的元素不在 WSDL 所需的命名空间中。
    • 消息中元素的顺序与 WSDL 不一致。

    要确定服务或客户端是否符合 WSDL,请将消息与 WSDL 进行比较。

    或者,对于第三方 Web 服务,要确定该 Web 服务是否符合 WSDL,执行以下操作会很有用:

    1. 使用第三方工具生成 Web 客户端。

    2. 从该 Web 客户端发送消息:

      • 如果成功,则很可能 Web 服务确实期望并发送与其 WSDL 一致的消息,而问题的原因在其他地方。在这种情况下,将此客户端发送的消息与 IRIS 客户端发送的消息进行比较。
      • 如果不成功,则可能是 Web 服务不期望或不发送与其 WSDL 一致的消息。
  • Web 服务或客户端可能会发送 不支持的格式的消息。检查正在使用的 WSDL 并确保它在 IRIS 中受支持很有用;请参阅使用 WSDL。请注意,这些详细信息在 IRIS 中会随时间而变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yaoxin521123

谢谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值