将 WSDL 转换为其各自的 HTTP 绑定

2023-11-30

我只是尝试根据 WSDL 提供的数据将 WSDl 转换为许多不同的 HTTP 请求。我读过很多类似的问题,但没有一个真正提供答案。

有人说用SOAPUI- 我熟悉这个应用程序并使用它。但我需要自己从 WSDL 创建这些 HTTP 请求。

有人说要尝试一下JAXWS- 我看了很多关于这个的教程以及Axis这些将 WSDL 转换为 Java 类绑定,您可以使用这些方法来测试 Web 服务。我真的很想自己生成 HTTP 请求,以便在某一时刻我可以操纵该请求并发送我自己的测试。

我开始使用wsdl4j我自己开始解析 WSDL,但在我绝对确定我不会重新发明轮子之前,我宁愿不走这条路。在我看来,过去有这个必要吗?但与WSDL4J和其他所有库一样,我没有看到 WSDL 到 Soap 消息的转换。

任何建议都会非常有帮助。我的目标是能够获取 WSDL、检查它并为 WSDL 中的每个方法创建 HTTP-SOAP 请求,然后能够测试它们的安全问题。第一步是创建这些请求!


调用 SOAP Web 服务时,您可以使用静态调用或动态调用。

静态调用意味着从 WSDL 创建存根并使用它来执行调用。这会为您创建所有“管道”代码,但与该 Web 服务紧密相关,并且您不能将其用于具有不同合同的其他 Web 服务。对于每个 WSDL,您需要创建另一个存根。

通过动态调用,您可以在运行时读取 WSDL,并根据从 WSDL 获取的信息了解如何调用 Web 服务。向其提供多个 WSDL,客户端就会进行调整。

动态调用是什么SoapUI用于生成示例请求和响应。

它读取您提供给它的 WSDL,从类型部分提取 XML 模式并生成 XML 实例。为此,它使用Wsdl4j and XmlBeans在引擎盖下。

使用 Wsdl4j 的决定是好的,因为它可以让您在解析 WSDL 时进行控制。但还要看看 XmlBeans;它还有一些其他的tools你可能会发现有用,比如模式到实例例如类。

如果您需要查看它的运行情况(也许调试它以查看发生了什么),您可以使用 SoapUI API 创建一个快速脏测试:

import com.eviware.soapui.impl.wsdl.WsdlInterface;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.support.wsdl.WsdlImporter;

public class Test {
    public static void main(String[] args) throws Exception {
        WsdlProject project = new WsdlProject();
        WsdlInterface[] wsdls = WsdlImporter.importWsdl(project, "http://www.html2xml.nl/Services/Calculator/Version1/Calculator.asmx?wsdl");
        WsdlInterface wsdl = wsdls[0];
        System.out.println(wsdl.getOperationByName("Add").createRequest(true));
        System.exit(0); // just to clear up some threads created by the project 
    }
}

您应该看到打印的消息(对于计算器 WS 的添加操作)如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:Add>
         <tem:a>?</tem:a>
         <tem:b>?</tem:b>
      </tem:Add>
   </soapenv:Body>
</soapenv:Envelope>

希望这可以帮助您超越第一步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 WSDL 转换为其各自的 HTTP 绑定 的相关文章

随机推荐