ste*_*eve 5 service soap wsdl web
我只是试图将WSDl转换为来自WSDL提供的数据的许多不同的HTTP请求.我已经阅读了大量类似的问题,但没有一个真正提供了答案.
有人说使用SOAPUI - 我熟悉这个应用程序并使用它.但我需要自己从WSDL创建这些HTTP请求.
有人说要尝试JAXWS - 我在这个和Axis上查看了许多教程,这些教程将WSDL转换为Java类绑定,并使用这些方法来测试Web服务.我真的想自己生成HTTP请求,这样我就可以操作请求并发送自己的测试.
我开始使用wsdl4j开始自己解析WSDL,但是在我完全确定我没有重新发明轮子之前,我宁愿不要走这条路.在我看来,过去一直需要这个吗?但是使用WSDL4J和其他所有库我都没有看到SoDL消息转换的WSDL.
任何建议都会非常有帮助.目标是我希望能够获取WSDL,检查它并为WSDL中的每个方法创建HTTP-SOAP请求,并且能够测试它们的安全性问题.第一步是创建这些请求!
调用 SOAP Web 服务时,您可以使用静态调用或动态调用。
静态调用意味着从 WSDL 创建存根并使用它来执行调用。这会为您创建所有“管道”代码,但与该 Web 服务紧密相关,并且您不能将其用于具有不同合同的其他 Web 服务。对于每个 WSDL,您需要创建另一个存根。
通过动态调用,您可以在运行时读取 WSDL,并根据从 WSDL 获得的信息了解如何调用 Web 服务。向其提供多个 WSDL,客户端就会进行调整。
SoapUI使用动态调用来生成示例请求和响应。
它读取您提供给它的 WSDL,从类型部分提取 XML 模式并生成 XML 实例。为此,它在底层使用了Wsdl4j和XmlBeans 。
使用 Wsdl4j 的决定是好的,因为它可以让您在解析 WSDL 时进行控制。但还要看看 XmlBeans;它还有一些您可能会觉得有用的其他工具,例如实例类的架构。
如果您需要查看它的运行情况(也许调试它以查看发生了什么),您可以使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
您应该看到打印的消息(对于计算器 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>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助您超越第一步。
| 归档时间: |
|
| 查看次数: |
2821 次 |
| 最近记录: |