026 WebService入門 - bos

來源:互聯網
上載者:User

標籤:charset   本地   publish   tin   utf-8   mobile   obj   class   des   

 

一、什麼是WebService

1.Web service是一個平台獨立的,低耦合的,自包含的、基於可程式化的web的應用程式,
可使用開放的XML標準來描述、發布、發現、協調和配置這些應用程式,
用於開發分布式的互操作的應用程式。

2.簡單理解就是兩個系統之間的遠程調用技術

3.並且WebService之間的調用可以實現跨語言調用,因為調用使用的是http協議,傳輸的資料格式為xml

二、調用網路上的WebService服務

1.開啟命令列 進入E:\\test,輸入wsimport -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

2.此時,該目錄會產生.class檔案和.java檔案,刪除class檔案,把java檔案複製到一個簡單的java項目

3.編寫以下調用代碼

/**
* 遠程調用Web Service服務
*/
public class App {

public static void main(String[] args) {
MobileCodeWS ss = new MobileCodeWS();
MobileCodeWSSoap soap = ss.getMobileCodeWSSoap();
String res = soap.getMobileCodeInfo("15659789999", null);
System.out.println(res);
}
}

三、WebService介紹

WebService調用是基於HTTP協議的
調用時傳輸的資料是XML格式的,因此可以實現跨語言調用

四、HTTP介紹

HTTP請求格式如下:
<request-line> //請求行
<headers> //要求標頭
<blank line> //空行
[<request-body>] //請求體,不一定有

在HTTP請求中,第一行必須是一個請求行,用來說明請求類型(get、post)、要訪問的資源(url)以及使用的HTTP版本
緊接著是一個首部小節,用來說明伺服器要使用的附加資訊,在首部之後是一個空行,再此之後可以添加任意的其他資料[稱之為主體(body)]

POST /getinfo.action HTTP/1.1
HOST www.hao.com
UserAgent ...
contentType application/x-www-form-urlencoded
//這裡有一個空行
id=001&name=hao&age=20

五、SOAP概念

SOAP(Simple Object Access Protocal),簡易物件存取通訊協定 (SOAP)
SOAP是基於HTTP的,屬於HTTP的範疇

POST /getinfo.action HTTP/1.1
HOST www.hao.com
UserAgent ...
Content-Type text/xml; charset=utf-8
Connection keep-alive
//這裡有一個空行

<xml資料>
SOAP對傳輸的XML進行了約束,同時規定了請求和響應的XML資料格式,envelop和body是固定的
<envelop>
<body>
<!--方法名-->
<getInfo>
<id>01</id>
<getInfo>
<body>
</envelop>


六、WSDL概念

WSDL(WebService Description Language):Web服務描述語言
就是一個xml文檔,用於描述當前服務的一些資訊(服務名稱、服務發布地址、服務提供的方法、方法的參數類型、方法的傳回值類型)
服務名字:wsdl:service
提供的方法:wsdl:operation
WSDL相當於Web服務的使用說明書

七、WebService程式

簡單的網路應用使用單一的語言寫成,它的唯一外部程式就是他所以來的資料庫
複雜的網路應用,一般對外公布Service層,其他各個終端共同調用

八、基於JDK1.7發布一個簡單的WebService服務

@WebService
public class HelloService {

public String sayHello(String name){
System.out.println("服務端的sayHello方法被調用了...");
return "hello,"+name;
}

public static void main(String[] args) {
String address = "http://192.168.1.2:8989/hello";
//對應的wsdl為http://192.168.1.2:8989/hello?wsdl
Object implementor = new HelloService();
Endpoint.publish(address, implementor);

}
}

九、使用JDK的wsimport命令產生本地代碼調用WebService服務

wsimport命令用於解析wsdl檔案,產生用戶端本地代碼
-s用於指定目標代碼放置在哪
-p用於指定目標的報名,若不指定則和伺服器的包名一致
無論服務端的代碼使用什麼語言寫的,都在用戶端產生Java代碼
wsimport -s . -p com.hao.webservice http://192.168.1.2:8989/hello?wsdl

十、用戶端調用代碼

/**
* 1.通過wsimport命令解析wsdl檔案產生本地代碼
* 2.通過本地代碼建立一個代理對象
* 3.通過代理對象實現遠程調用
*/
public class App {

public static void main(String[] args) {
HelloServiceService ss = new HelloServiceService();
//建立用戶端代理對象用於遠程調用
HelloService proxy = ss.getHelloServicePort();
System.out.println(proxy.sayHello("小明"));
}
}

 

026 WebService入門 - bos

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.