我正在开发一个与第三方集成的 SOAP 应用程序。我觉得这个第三方的WSDL很奇怪。我对 SOAP 还很陌生,所以如果它没有损坏,我不想要求他们修复它。以下是我注意到的一些我认为错误的事情,尽管我确信它在技术上是有效的文档(因此我在标题中写了“最佳实践”)。另外,我使用 gSOAP 作为我的 SOAP 库,这可能就是为什么我认为其中一些事情很奇怪(我对 gSOAP 的了解甚至比对一般 SOAP 的了解还要新)。
它们在同一 WSDL 中具有为 SOAP 1.1 和 SOAP 1.2 指定的接口。这导致 gSOAP 生成所需数量的两倍,因为我只使用 1.2。
他们所有的命名空间都是http://tempuri.org. 不应该是这样的,对吧?
尽管定义了一堆 RPC 调用,但它们的 WSDL 使用文档格式。我正在考虑要求他们切换到 RPC 格式,因为 gSOAP 似乎不会生成采用 C++ 类型参数作为文档格式的方法。相反,它为每个 API 函数的输入和响应数据创建一个新类。如果我无法解决这个问题,我将不得不编写另一层包裹 gSOAP 的内容,以便为我的应用程序的其余部分提供合理的 API。另外,AFAICT,如果他们切换到 RPC,那么来回的 XML 将与现在完全相同,所以我认为这不会很困难。
元素的 minOccurs = 0 但当我提交没有它们的请求时,我会收到返回的错误,表明它们是必需的(有时甚至是空指针异常的堆栈跟踪)。如果需要的话,他们应该将它们指定为 minOccurs = 1,对吧?
几乎所有 Web 服务函数都指定一个响应,其中包含一个表示成功的整数(实际上是一个布尔值)和一个错误消息字符串。他们应该为此使用 SOAP 错误吗?我认为如果这是一个错误,我的应用程序会更容易处理,因为 gSOAP 可以让我很容易地弄清楚这一点(并简单地打印错误消息)。
当然,我并不对这家第 3 方公司仅仅因为我要求他们改变他们的 WSDL 就抱有很高的希望。至少我会学到一些东西……据我所知,这些都没有错,甚至没有问题。感谢您的帮助。
1 - 他们可能认为这是一个功能。:-)
2 - 太可怕了。
3 - 很多人推荐这个。这称为包装格式。
4 - 你是对的。
5 - 这取决于。从理论上讲,您可能是正确的,但实际上许多 SOAP 工具包对 SOAP 错误没有很好的支持,因此它们可能故意选择不使用异常。
| 归档时间: |
|
| 查看次数: |
12021 次 |
| 最近记录: |