从 WSDL 生成请求/响应 XML
Posted
技术标签:
【中文标题】从 WSDL 生成请求/响应 XML【英文标题】:Generating Request/Response XML from a WSDL 【发布时间】:2016-06-24 19:26:00 【问题描述】:有没有办法只从 WSDL 文件生成请求和响应 XML 格式 - 如果 web 服务现在不存在。
SoapUI 不会给我响应,除非它通过请求联系 Web 服务。有没有其他工具可以做到这一点?
我应该假设这些信息是可用的 - 因为没有它 - Axis/JAXWS 等客户端存根框架将无法生成存根来生成请求然后解释响应。
【问题讨论】:
你能发布 WSDL 吗? 同一个主题有很多关于SO的问题。您想如何将 WSDL 转换为 XML? XSL?爪哇? C#?一个工具?同时,看看这个:***.com/questions/20486743/…(它也使用soapUI) @SideriteZackwehdex - 一个工具。 【参考方案1】:自己进行此操作将使您深入了解 WSDL 的结构以及它如何完成您的工作。这是一个很好的学习机会。如果您只有 WSDL 的 URL,则可以使用soapUI 完成此操作。 (我使用的是soapUI 5.2.1)如果您实际上将完整的WSDL 作为文件提供给您,那么您甚至不需要soapUI。问题的标题是“请求和响应 XML”,而问题正文是“请求和响应 XML 格式”,我将其解释为请求和响应的架构。无论如何,以下将为您提供可以在 XSD2XML 上使用的架构来生成示例 XML。
-
启动一个“新建肥皂项目”,输入项目名称和 WSDL 位置;
选择“创建请求”,取消选择其他选项并单击
好的。
在左侧的“项目”树下,右键单击一个界面
并选择“显示界面查看器”。
选择“WSDL 内容”选项卡。
您应该会在右侧看到 WSDL 文本;查找以“wsdl:types”开头的块,下面是输入和输出消息的架构。
每个架构定义都以
<s:element name="GetWeather">
之类的内容开头,以</s:element>
结尾。
将块复制到文本编辑器中;在此块上方添加:
<?xml version="1.0" encoding="UTF-8"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
在复制的 XML 块下方,添加</s:schema>
决定是否需要“UTF-16”而不是“UTF-8”
“s:”和“xmlns:s”应该与您复制的块相匹配(步骤
5)
将此文件保存为“.xsd”扩展名;如果您有“XML 副本
编辑器”或某些此类工具(可能是 XML Spy),您应该检查一下
这是格式正确的 XML 和有效架构。
对 soapUI 右侧窗格中的所有“元素”项重复
直到你到达li>
这样你会得到一些你可能没有的类型定义
有兴趣。如果要挑挑拣拣的话,用下面的
方法:
查看类型定义下方 WSDL 文本中“wsdl:portType”下的“wsdl:operation”项。它们将具有“wsdl:input”和“wsdl:output”。从“wsdl:input”和“wsdl:output”中获取消息名称。将它们与可能位于 WSDL 中的“wsdl:portType”条目上方的“wsdl:message”名称相匹配。从“wsdl:message”项中获取“wsdl:part”元素名称,并在“wsdl:types”下查找该名称作为元素名称。这些将是您感兴趣的架构。
您可以使用http://www.webservicex.com/globalweather.asmx?wsdl 的WSDL 尝试上述过程
【讨论】:
【参考方案2】:由于您说 Web 服务现在不可用,您可以通过创建将创建示例响应格式的模拟服务来做到这一点。
【讨论】:
为什么需要在线服务?所有生成存根的工具(如axis、jax-ws等)都能够只用一个wsdl文件生成存根——那么为什么需要实时服务呢? 基本上它正在向服务器(端点)发送请求,它应该处理请求并返回响应。如果服务不存在,那么客户端将发送请求,但服务器将不返回响应,因为它没有运行,它会产生超时错误.. 如果axis/jaxws能够在服务不活跃的情况下生成可以理解响应的存根,那么为什么一个工具不能在服务不活跃的情况下生成示例响应xml。跨度> 根据我的理解。Soap UI 是一个充当客户端的工具。它只是发送请求并等待响应。只要服务器做出反应,它就不会产生任何结果。 我不是特别询问 SoapUI - 我是问是否有可用的工具可以做到这一点?【参考方案3】:试试这个在线工具:https://www.wsdl-analyzer.com。它似乎是免费的,并且不仅仅为请求和响应生成 XML。
还有这个:https://www.oxygenxml.com/xml_editor/wsdl_soap_analyzer.html,可以下载,但不是免费的。
【讨论】:
它不生成 xml 请求。也许它做了一次,但它不再这样做了? 也许...我没有看到该选项,但我不记得它是如何工作的。如果您发现其他问题,请告诉我,以便我更新答案。 如果您单击操作的名称,WSDL Analyzer 会显示请求模板。 @FuePi 感谢您的提示.. 我可能一直在寻找一段时间,否则:-)【参考方案4】:Parasoft 是一个可以做到这一点的工具。我在过去的工作场所使用这个工具完成了这件事。您可以在 Parasoft SOATest 中生成请求并在 Parasoft Virtualize 中获得响应。不过确实要花钱。 但是,Parasoft Virtualize 现在有一个免费的社区版本,您可以从中从 WSDL 生成响应消息。可以从parasoft community edition下载
【讨论】:
【参考方案5】:我使用SOAPUI 5.3.0
,它有一个用于创建请求/响应的选项(也使用 WSDL),您甚至可以创建一个模拟服务,它会在您发送请求时做出响应。程序如下:
-
右键单击您的项目并选择新建模拟服务选项,该选项将创建模拟服务。
右键单击模拟服务并选择新建模拟操作选项,该选项将创建可用作模板的响应。
编辑#1:
查看SoapUI link 以获取最新版本。有专业版和免费开源版。
【讨论】:
不错!如果不阅读此回复,我永远不会发现 SoapUI 是迄今为止更好的 WSDL 文件工具,还有更多,这应该是公认的答案! 我还使用了 SoapUI(开源版本),发现它的运行非常简单直观,特别是使用请求编辑器。【参考方案6】:最简单的方法是使用这个chrome扩展link,快乐的网络服务请求
【讨论】:
【参考方案7】:测试您的 WSDL 文件的在线链接是:
https://wsdlbrowser.com/
https://wsdlanalyzer.com/
【讨论】:
两个链接现在都失效了。以上是关于从 WSDL 生成请求/响应 XML的主要内容,如果未能解决你的问题,请参考以下文章
Spring-ws 自动生成wsdl 修改请求默认Request后缀的问题
当我使用wsdl和端点url执行我的curl php请求时获得空白响应