當調用SOAP Web服務時,您可以使用靜態調用或動態調用。
靜態調用意味着從WSDL創建一個存根並使用它來執行調用。這將爲您創建所有「管道」代碼,但與該Web服務緊密相關,您不能將其用於具有不同合同的其他Web服務。對於每個WSDL,您需要創建另一個存根。
通過動態調用,您可以在運行時讀取WSDL,並根據您從WSDL獲取的信息找出如何調用Web服務。爲其提供多個WSDL並使客戶端適應。
動態調用是SoapUI用於生成示例請求和響應的內容。
它讀取您提供的WSDL,從類型部分提取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
}
}
你應該看到打印的信息(用於添加計算器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>
希望這可以幫助你超越的第一步。
woa,這是5年前問的! :o - 沒有人在我之前編輯它:o – Gewure