標籤: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