認識一下WebService應用的簡單開發

    在開發中,難免遇到兩個不一樣系統交互的問題,好比數據信息同步、數據信息獲取等,解決問題的途徑有多種,今天帶你們認識一下 WebService,看看它在實際應用中的處理。java

    1、什麼是WebServiceweb

    簡單的說:WebService即Web服務,它是一種跨編程語言和跨操做系統平臺的遠程調用技術。編程

    2、WebService三要素app

    SOAP (Simple Object Access Protocol):簡易對象訪問協議,soap用來描述傳遞信息的格式;eclipse

    WSDL (WebServices Description Language):Web服務描述語言,用來描述如何訪問具體的接口;編程語言

    UDDI (Universal Description Discovery and Integration):通用描述、發現及整合,用來管理、分發、查詢webService;ide

    3、調用第三方提供的WebService服務操作系統

    網上有不少免費的WebService服務,咱們經過調用這些免費的WebService服務,來獲取所需的數據信息,下面經過調用免費的WebService服務查詢手機號碼歸屬地的信息。.net

    (1)根據提供的服務網址,執行命令,生成代碼code

    提供服務的WebService網址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl,經過wsimport命令(該命令是JDK/bin下自帶的),生成代碼:

wsimport -keep http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

    打開cmd,在窗口輸入上面的命令,執行結果以下:

    因爲不一樣的WebService使用的代碼類型,如 java、.net等,因此這裏注意一下,若出現報錯的狀況,看看是不是由於代碼編寫的類型不一樣致使,這時,就須要將wsdl下載下來進行修改了。執行完後,在目錄下咱們能夠看到生成了一些java和class文件,刪除class文件,保留java文件。

    (2)新建java項目,導入生成的文件

    打開eclipse,新建java project,將java文件複製到項目目錄下,注意路徑,以下:

    

    分析一下java文件:MobileCodeWS.java、MobileCodeWSSoap.java是重要的服務類,從代碼中能夠看出,在下面使用中須要實例化。

    (3)實例化類,編寫客戶端代碼,調用接口獲取數據

    新建PhoneWsClient類,代碼以下:

public class PhoneWsClient{

   public static void main(String[] args){
       //實例化服務類
       MobileCodeWS ws = new MobileCodeWS();
       //調用服務類的方法獲取接口實例
       MobileCodeWSSoap soap = ws.getMobileCodeWSSoap();
       //經過接口獲取數據
       String phoneInfo = soap.getMobileCodeInfo("1.......3(手機號)", null);
       System.out.println(phoneInfo);
   }
}

    項目結構以下:

    運行結果以下:

    4、開發本身的WebService服務

    (1)新建java project項目,建立主要類

    在項目中,主要類分爲:接口類、實現類、發佈類,以下所示結構:

    接口interface:

/*
 * 使用@WebService註解標註WebServiceI接口
 */
@WebService
public interface WebServiceI{
    //使用@WebMethod註解標註WebServiceI接口中的方法
    @WebMethod
    String sayHello(String name);
}

    實現Implement:

/*
 * 使用@WebService註解標註實現類WebServiceImpl
 */
@WebService
public class WebServiceImpl implements WebServiceI{
    
    @Override
    public String sayHello(String name){
       System.out.println("sayHello "+name);
       return "sayHello "+name;
    }
}

    發佈Publish:

/*
 * 發佈WebService
 */
public class WebServicePublish{
    public static void main(String[] args){
        //定義WebService的發佈地址,這個地址就是提供給外界訪問Webervice的URL地址
        String address = "http://localhost:8889/My_Server/Webservice";
        //使用Endpoint類提供的publish方法發佈WebService
        Endpoint.publish(address, new WebServiceImpl());
        System.out.println("發佈webservice成功!");
    }
}

    (2)運行WebServicePublish類,發佈WebService

    

    若運行時報以下錯誤:

Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found. Have you run APT to generate them?

    解決辦法:

    先用apt命令將主程序進行編譯,而後生成一些java文件;

    升級JDK版本,好比1.7之後(推薦);

    (3)訪問發佈WebService的URL地址

    本地的話,直接用localhost,若給其餘人使用,則需改成實際地址:http://localhost:8889/My_Server/Webservice

    點擊WSDL進行查看:

    從wsdl文件中能夠看到咱們提供的接口和類。

    固然,發佈的方式也能夠不一樣,根據項目類型,可使用監聽器或者Servlet等方式。

    同第三方服務同樣,咱們也能夠根據訪問的wsdl地址生成客戶端代碼進行接口調用,這裏就不作演示了,你們參照上面便可實現。

相關文章
相關標籤/搜索