使用SOAP::Lite服务存根

8
我一直在查看关于使用 WSDL URL 生成服务存根的 此 soap lite 教程。然而,我的数据结构更加复杂并且有嵌套元素。该教程介绍了如何使用 SOAP::Data 创建复杂结构。这似乎是非常手动的。
在其他语言中,例如 Java,很容易存根请求对象并使用方法调用来设置参数。是否有一种方法可以获取请求对象,从而可以简单地对对象进行方法调用以设置参数,而不是像教程和 SOAP::Data 文档中那样 "手动" 编写复杂的数据结构?
注意:SOAP::Lite 不是 SOAP::WSDLSOAP::WSDL 文档说明如下:

该模块存在大量已知错误,并且没有正在积极开发。此 3.0 版本旨在将模块更新为在较新的 Perl 上通过测试。这是向现有应用程序提供服务的服务。

因此,目前支持的模块是 SOAP::Lite 或者 XML::Compile::SOAP

5
我对SOAP::Lite和相关的WSDL工具烦透了,它们不支持复杂数据类型。老实说,我觉得整个东西的文档不足,示例非常有限。 - Recct
1
这正是我所想的!甚至我本来要合作的公司也在使用模板化的信封等东西,每个人似乎都在吹嘘标准和合规性,但实际上一切都是胶水代码和胶带哈哈。 - Recct
2
我已经在你的问题中添加了一个解释,说明为什么SOAP::WSDL不合适。你尝试过Mark Overmeer的@mark-overmeer XML::Compile::SOAP吗? - G. Cito
我不确定我理解你在这里使用 "stub" 的意思。你是指创建一个用于测试的模拟对象吗?还是你正在寻找一种简化创建请求所需代码的方法?当处理复杂数据类型时,可以将对象数组传递给构造函数。 - G. Cito
由于这与服务有关,您可以参考我在此处的答案:http://stackoverflow.com/questions/3143603/remote-function-call-using-soaplite/3144948#3144948 我不得不解决SOAP::Lite默认抛出多个服务的问题。 - Axeman
显示剩余2条评论
1个回答

1
WSDL实际上并不是SOAP标准的一部分。WSDL是一个单独的标准,通常与Java/.Net等一起使用SOAP。
看起来您想要使用Java的“将IDE指向WSDL”的方法。这并不能替代理解SOAP协议。我强烈建议在你必须在最后期限之前这样做之前学习如何进行手动SOAP调用和调试它们。我认识很多Java“Web服务”程序员,因为IDE为他们编写了大部分基础设施,所以他们甚至不知道协议是如何工作的。
话虽如此,优秀的XML::Compile::WSDL11可能会达到您的预期效果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接