標籤:c style class blog code java
wsimport命令介紹
在JDK的bin檔案夾中,有一個wsimport.exe,這個工具依據wsdl檔案產生相應的類檔案,然後用這些類檔案,就可以像調用本地的類一樣調用WebService提供的方。該工具可以用於非Java的伺服器,如:用C#編寫的WebService,通過wsimport則產生Java的用戶端實現。對於命令的使用方法,我們以開放的中文簡體字與繁體字轉換Web Service介面為例,如下:
在命令提示字元中使用如下命令:
wsimport -keep -p com.zhj2f.client http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
命令參數說明(這裡直接介紹比較常用的): | -d:產生用戶端執行類的class檔案的存放目錄 | -s:產生用戶端執行類的源檔案的存放目錄 | -p:定義產生類的包名 使用wsimport命令後,我們可以得到相應的代碼檔案,將其拷貝到你的項目中,即可使用,分類樹結構如下所示: 測試:建立工程,並將com.zhj2f.client包拷到工程檔案下,編寫測試檔案test.java,代碼如下:
package test;import com.zhj2f.client.TraditionalSimplifiedWebService;import com.zhj2f.client.TraditionalSimplifiedWebServiceSoap;public class test { public static void main(String args[]){ TraditionalSimplifiedWebService tsws = new TraditionalSimplifiedWebService(); TraditionalSimplifiedWebServiceSoap tss = tsws.getTraditionalSimplifiedWebServiceSoap(); String res = tss.toTraditionalChinese("我是誰"); System.out.println(res); }}
當然我們還可以使用上面同樣的方法調用天氣預報提供的開放webservice介面,只是天氣預報的那個介面有點不同。如果我們直接使用wsimport 通過wsdl地址生存java 檔案時,會報錯。因為該wsdl裡麵包含 ref = "s:schema" 這樣的引用。而jaxb是不支援的。所以手動將該wsdl下載(也就是網頁另存新檔)下來做下修改,然後再產生java檔案。
修改方法為:將所有的<s:element ref="s:schema"/> 改成 <s:any minOccurs="2" maxOccurs="2"/>,並且刪除<s:any/>。
然後再通過wsimport產生java檔案,就可以正常使用了。
參考資料:
[1] http://www.cnblogs.com/simle/archive/2011/11/03/2233417.html
[2] http://blog.csdn.net/lun379292733/article/details/18035915
[3] 常用Web Service匯總