【问题标题】:Generating Request/Response XML from a WSDL从 WSDL 生成请求/响应 XML
【发布时间】:2016-06-24 19:26:00
【问题描述】:

有没有办法只从 WSDL 文件生成请求和响应 XML 格式 - 如果 web 服务现在不存在。

SoapUI 不会给我响应,除非它通过请求联系 Web 服务。有没有其他工具可以做到这一点?

我应该假设这些信息是可用的 - 因为没有它 - Axis/JAXWS 等客户端存根框架将无法生成存根来生成请求然后解释响应。

【问题讨论】:

  • 你能发布 WSDL 吗?
  • 同一个主题有很多关于SO的问题。您想如何将 WSDL 转换为 XML? XSL?爪哇? C#?一个工具?同时,看看这个:stackoverflow.com/questions/20486743/…(它也使用soapUI)
  • @SideriteZackwehdex - 一个工具。

标签: xml web-services wsdl


【解决方案1】:

自己进行此操作将使您深入了解 WSDL 的结构以及它如何完成您的工作。这是一个很好的学习机会。如果您只有 WSDL 的 URL,则可以使用soapUI 完成此操作。 (我使用的是soapUI 5.2.1)如果您实际上将完整的WSDL 作为文件提供给您,那么您甚至不需要soapUI。问题的标题是“请求和响应 XML”,而问题正文是“请求和响应 XML 格式”,我将其解释为请求和响应的架构。无论如何,以下将为您提供可以在 XSD2XML 上使用的架构来生成示例 XML。

  1. 启动一个“新建肥皂项目”,输入项目名称和 WSDL 位置; 选择“创建请求”,取消选择其他选项并单击 好的。
  2. 在左侧的“项目”树下,右键单击一个界面 并选择“显示界面查看器”。
  3. 选择“WSDL 内容”选项卡。
  4. 您应该会在右侧看到 WSDL 文本;查找以“wsdl:types”开头的块,下面是输入和输出消息的架构。
  5. 每个架构定义都以<s:element name="GetWeather"> 之类的内容开头,以</s:element> 结尾。
  6. 将块复制到文本编辑器中;在此块上方添加: <?xml version="1.0" encoding="UTF-8"?> <s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  7. 在复制的 XML 块下方,添加&lt;/s:schema&gt;
  8. 决定是否需要“UTF-16”而不是“UTF-8”
  9. “s:”和“xmlns:s”应该与您复制的块相匹配(步骤 5)
  10. 将此文件保存为“.xsd”扩展名;如果您有“XML 副本 编辑器”或某些此类工具(可能是 XML Spy),您应该检查一下 这是格式正确的 XML 和有效架构。
  11. 对 soapUI 右侧窗格中的所有“元素”项重复 直到你到达​​li>
  12. 这样你会得到一些你可能没有的类型定义 有兴趣。如果要挑挑拣拣的话,用下面的 方法: 查看类型定义下方 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. 右键单击您的项目并选择新建模拟服务选项,该选项将创建模拟服务。
      2. 右键单击模拟服务并选择新建模拟操作选项,该选项将创建可用作模板的响应。

      编辑#1:

      查看SoapUI link 以获取最新版本。有专业版和免费开源版。

      【讨论】:

      • 不错!如果不阅读此回复,我永远不会发现
      • SoapUI 是迄今为止更好的 WSDL 文件工具,还有更多,这应该是公认的答案!
      • 我还使用了 SoapUI(开源版本),发现它的运行非常简单直观,特别是使用请求编辑器。
      【解决方案6】:

      最简单的方法是使用这个chrome扩展link,快乐的网络服务请求

      【讨论】:

        【解决方案7】:

        测试您的 WSDL 文件的在线链接是:

        https://wsdlbrowser.com/

        https://wsdlanalyzer.com/

        【讨论】:

        • 两个链接现在都失效了。
        猜你喜欢
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 1970-01-01
        • 2014-07-13
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        相关资源
        最近更新 更多