java中調用一個webService的接口,詳細步驟

一、WebService介紹
1、WebService定義
顧名思義就是基於Web的服務。
它使用Web(HTTP)方式,接收和響應外部系統的某種請求,從而實現遠程調用。
web service能解決:
    * 基於Web的服務:服務器端整出一些資源讓客戶端應用訪問(獲取數據)
    * 一個跨語言、跨平臺的規範(抽象)
    * 多個跨平臺、跨語言的應用間通信整合的方案(實際)


2、webservice理解
我們可以調用互聯網上查詢天氣信息Web服務,然後將它嵌入到我們的程序(C/S或B/S程序)當中來,
當用戶從我們的網點看到天氣信息時,他會認爲我們爲他提供了很多的信息服務,
但其實我們什麼也沒有做,只是簡單了調用了一下服務器上的一段代碼而已。
WebSerice可以將你的服務(一段代碼)發佈到互聯網上讓別人去調用,
也可以調用別人機器上發佈的WebService,就像使用自己的代碼一樣。
* 什麼時候使用web Service:
1. 同一家公司的新舊應用之間
2. 不同公司的應用之間
    如天貓網與中通物流系統交互
3. 一些提供數據的內容聚合應用:天氣預報、股票行情


3、webservice調用的預備知識
(1)XML—Extensible Markup Language 擴展性標記語言 
    XML,用於傳輸格式化的數據,是Web服務的基礎。
    namespace-命名空間。
    xmlns=“http://www.xr.com” 使用默認命名空間。
    xmlns:xr=“http://www.xr.com”使用指定名稱的命名空間。

(2)WSDL—WebService Description Language Web服務描述語言。
    通過XML形式說明服務在什麼地方-地址。
    通過XML形式說明服務提供什麼樣的方法 – 如何調用。

(3)SOAP—Simple Object Access Protocol(簡單對象訪問協議)
    SOAP作爲一個基於XML語言的協議用於有網上傳輸數據。
    SOAP = 在HTTP的基礎上+XML數據。
    SOAP是基於HTTP的。
    SOAP的組成如下:
        Envelope – 必須的部分。以XML的根元素出現。
        Headers – 可選的。
        Body – 必須的。在body部分,包含要執行的服務器的方法。和發送到服務器的數據。

4、webservice服務網址
Webservice服務網站:http://www.webxml.com.cn

5、WSDL解析
點開webservice網站上的手機歸屬地查詢裏的
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
查看wsdl對服務器的描述
Wsdl文檔從下往上讀
wsdl:service—所有請求服務的站點集合
wsdl:port—定義爲webservice單個服務訪問點
binding—特定服務訪問點與具體服務類的綁定
PortType—對於某個訪問入口點類型所支持的操作的抽象集合,這些操作可以由一個或多個服務訪問點來支持(服務類)
Operation—對服務中所支持的操作的抽象描述,一般單個Operation描述了一個訪問入口的請求/響應消息對(方法)
Types-數據類型定義的容器,它使用某種類型系統需要的輸入參數和輸出參數的數據類型
Message—通信消息的數據結構的抽象類型化定義。使用Types所定義的類型來定義整個消息的數據結構(輸入參和輸出參)

 可以在java項目和spring項目中調用,方法是一樣的

第一步:進入到web服務的官網中,選擇你要調用的web服務(我選擇的是電話號碼歸屬地的,其他的是一樣的,自己發佈的webservice也是一樣的)。然後進入到後綴名是?wsdl的路徑中,可以看一下。

http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx .asmx結尾的路徑中,有該服務可以調用的方法,以及方法中的參數。

第二步,複製路徑到命令窗體中,先進入到要解析到的文件夾路徑中,然後輸入

 

wsimport -s . -p com.xx.mobile wsdl的路徑    這是獲取到java文件和class文件,-p後面 是自己取的包名

wsimport -d .  wsdl的路徑    這是獲取到class文件

 

生成的java文件:

第三步:因爲項目中只能是java文件,所以把java文件複製到項目中相應的位置,然後調用方法,調用方法一定要聯網!
記得不要導錯包,你生成的java文件複製在哪個包,就導入哪個包下的。這個可以在main方法中用,有可以在spring對應的方法中調用,方法是一樣的。不知道有哪些方法可以調用,可以到asxm結尾的路徑中看詳細的方法。

public class TestModel {
    public static void main(String[] args) {
        //聲明訪問點的對象
        MobileCodeWS ws=new MobileCodeWS();
        //獲取具體的站點綁定的類對象
        MobileCodeWSSoap wsSoap=ws.getMobileCodeWSSoap();
        //調用綁定類的具體方法
        String info = wsSoap.getMobileCodeInfo("15666666666", "");
        System.out.println(info);
    }
}

 調用結果:

 

爲什麼是MobileCodeWS?

答:翻到wsdl路徑中的最後面,後面有一個service name的標籤,裏面就是訪問點的對象名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章