gpt4 book ai didi

soap - 将 WSDL 转换为其各自的 HTTP 绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 21:22:57 24 4
gpt4 key购买 nike

我只是试图从 WSDL 提供的数据中将 WSDl 转换为许多不同的 HTTP 请求。我已经阅读了大量类似的问题,但没有一个真正提供答案。

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

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

我开始使用 wsdl4j 自己开始解析 WSDL,但在我完全确定我没有重新发明轮子之前,我宁愿不走这条路。在我看来,过去有必要这样做吗?但与 WSDL4J 以及我没有看到 WSDL 到 Soap 消息翻译的所有其他库。

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

最佳答案

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

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

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

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

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

您使用 Wsdl4j 的决定很好,因为它可以让您在解析 WSDL 时进行控制。但也看看 XmlBeans;它还有一些其他tools您可能会发现有用,例如 schema to instance例如类。

如果您需要查看它的运行情况(也许调试它以查看发生了什么),您可以使用 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>

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

关于soap - 将 WSDL 转换为其各自的 HTTP 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com