【webservice】使用命令wsimport構建WebService客戶端


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匯總


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM