【问题标题】:How to Consume a SOAP Web Service with a local WSDL in CSharp, Java or Python?如何使用 CSharp、Java 或 Python 中的本地 WSDL 使用 SOAP Web 服务?
【发布时间】:2014-10-28 11:34:26
【问题描述】:

我正在尝试使用公共网络服务:

  • Web 服务使用 SOAP 通信
  • Web 服务不公开 WSDL。可以从创作者的网站下载。
  • Web 服务仅允许通过“列入白名单”的静态 IP 进行连接。
  • Web 服务托管在 GlassFish 上,所以我猜它是用 Java 编写的。
  • Web 服务规范相当长,包含许多必填字段。

我想在 Hackathon 挑战期间向不同类型的开发人员公开 Web 服务,他们可能使用 Python、Java、C# 或其他编程语言。

我使用 SOAPUI 来测试 Web 服务,这很容易。

当我尝试在 Python (SOAPpy) 和 C# 中使用标准包时,我遇到了很多困难。在使用 Java 和 CXF 时,创建请求对象是一场噩梦。

您将如何以对开发人员友好的方式公开 Web 服务?

不能对原始 Web 服务进行任何更改。

提前致谢!

【问题讨论】:

  • 开发人员应该访问原始 Web 服务(并绕过 ip 白名单),还是您想编写自己的与原始服务类似的行为?如果您要重新实现一个肥皂服务,您有多种选择,例如pysimplesoap、spyne 或soapfish。后者对从 WSDL 文件生成代码有一些不完整的支持(免责声明:我为soapfish做出了贡献。)
  • 谢谢菲利克斯!我正在寻找访问原始网络服务。我正在寻找一种简单的解决方案,可以让来自多种语言的程序员轻松访问,并且不需要大量代码。
  • 顺便说一句,跟上肥皂鱼。看起来很有前途!

标签: java python web-services soap wsdl


【解决方案1】:

如果您想访问原始 Web 服务,我建议您使用其本地协议 (SOAP),即使 SOAP 可能是主要的 PITA,并且有时可能缺少库支持(尤其是在 Python、Ruby 等现代脚本语言中),因为 SOAP 是不是“酷”。

许多开发人员认为 ReST/JSON 网络服务更“易于使用”,但在现有网络服务之上硬塞“包装器”/代理可能会导致更多混乱和细微错误。

如果 Web 服务相当复杂,这可能意味着该项目不适合举办黑客马拉松。如果我处于你的位置,我会为 Python 和 Java 等 1-2 种语言准备客户端存根(包括简化的库 API)。对于 Python,请查看jurko-suds、pysimplesoap 或 soapfish 之一,并查看哪一个最适合您的服务。

因为我觉得我正在脱离 StackOverflow 范围,所以我会在这里停下来:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2013-09-23
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多