调用SOAP Web服务时,可以使用静态调用或动态调用.
静态调用意味着从WSDL创建存根并使用它来执行调用.这会为您创建所有“管道”代码,但与该Web服务紧密相关,您不能将其用于具有不同合同的其他Web服务.对于每个WSDL,您需要创建另一个存根.
通过动态调用,您可以在运行时读取WSDL,并根据从WSDL获得的信息来确定如何调用Web服务.为它提供多个WSDL,客户端适应.
动态调用是SoapUI用于生成样本请求和响应的内容.
它读取您提供它的WSDL,从types部分提取XML模式并生成XML实例.为此,它使用引擎盖下的Wsdl4j和XmlBeans.
您决定使用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
}
}
您应该看到的消息(对于Calculator WS的Add操作)将是这样的:
?
?
希望这可以帮助您超越第一步.