標籤:
webservice 的概念
webservice 就是一個應用程式,它提供一種通過web方式訪問的api.
解決兩個系統或者(應用程式)之間的遠程調用.....
調用是跨語言,跨平台...
webservice 最基本的組成部分就是用戶端,服務端...
MyServerSocket.java
package cn.itcast.server;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;/** * * 啟動 服務端 * @ 作者 [email protected] * */public class MyServerSocket {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {ServerSocket serverSocket=new ServerSocket(8080);while(true){Socket socket=serverSocket.accept();InputStream is=socket.getInputStream();byte b []=new byte [1024];int length=0;StringBuffer buffer=new StringBuffer();while((length=is.read(b))!=-1){String string=new String(b,0,length);buffer.append(string);}System.out.println(buffer.toString());}}}
服務端:(作為服務端,怎麼將自己的應用程式發布成一個webservice,讓別人調用)
xml (webservice的用戶端與服務端進行互動的時候傳遞的資料格式)
webservice description language(web服務描述語言.. api)xml,簡稱wsdl
soap(簡易物件存取通訊協定 (SOAP)) webservice的用戶端與服務端進行互動的時候走的協議
(soap 分兩個版本(soap 1.1與soap1.2)),現在的版本是soap1.1,因為java jdk 只支援soap1.1版本的協議發布..
***** soap 協議=在http的基礎之上傳送xml格式的資料..
發布服務:
//java jdk 提供一個內建的類可以將java應用程式發布成webservice
/**
* 1,提供服務對外的訪問地址
* 2,提供服務的類的對象...
*/
Endpoint.publish("http://192.168.9.100:9999/helloService", new HelloService());
注意:1,endpoint是java jdk提供的類,用來發布webservice,所以你的jdk版本必須在1.6.0_21之上..
2,被發布的類當中必須包含一個有效(方法必須為publish的非靜態,非final的方法)的方法
3,被發布的類上面必須有註解...
package cn.itcast.server;import javax.xml.ws.Endpoint;public class PublishServer {/** * @param args */public static void main(String[] args) {//java jdk 提供一個內建的類可以將java 應用程式發布成webservice /** * 1,提供服務對外的訪問地址 * 2,提供服務的類的對象... */Endpoint.publish("http://192.168.9.100:9999/helloService", new HelloService());}}說明書
HelloService.java
package cn.itcast.server;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import cn.itcast.bean.User;@WebService(targetNamespace="www.baidu.com",serviceName="HelloServicePortType",portName="ServicePortType")public class HelloService {@WebMethod(exclude=true)public void doubleKill(){System.out.println("itcast");}public@WebResult(name="date")String getDate(@WebParam(name="date")String date){DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return dateFormat.format(new Date());}@WebMethod(operationName="getUserByName")public User getUserById(int id){User user=new User();user.setId(id);user.setMomo("18078900982");user.setUsername("老馮");user.setWeibo("[email protected]");user.setWeixin("l89999");return user;}}
webservice 的用戶端調用
用戶端:
(作為用戶端,怎麼調用別人發布的webservice)
調用服務:我們可以通過java jdk 內建的一個命令wsimport根據服務端說明書(wsdl)產生本地的java代碼
我們直接操作這些java 代碼,就可以調用webservice
wsimport -d . +服務說明書(wsdl)的地址 產生本地的class檔案
wsimport -s . +服務說明書(wsdl)的地址 產生本地的class檔案與java檔案
wsimport -s . -p(包名)+服務說明書(wsdl)的地址 產生本地的class檔案與java檔案
wsimport -s . +服務說明書(wsdl)的地址 產生本地的class檔案與java檔案
第一種方式調用。
第二種方式調用webservice
第一種方式調用:通過wsimport
工具1:webservice explorer(通過圖形化介面的方式調用webservice)
工具2:tcp/ip Monitor 可以攔截webservice用戶端與webservice服務端進行互動的整個過程以及資料轉送的格式..
第二種方式調用:通過java jdk內建的一個類URLConnect(可以發送一個http請求)
原理:我們可以通過URLConnect 這個對象,發送一個http請求,往webservice服務端 傳送xml格式的資料,
類比soap 協議,因為soap協議就是在http的基礎上傳送xml格式的資料..
webservice 第三種調用總結
第三種方式調用:通過用戶端編程的方式調用 webservice 我們需要通過java jdk內建的類Service,同時,我們需要依賴一個介面,這個介面我們可以通過wsimport產生的本地代碼當中擷取...
/**
互連網上有很多免費的服務,http://www.webxml.com.cn可以在這個網站上面找到。
**/
webservice 調用互連網上的服務
1,調用互連網上手機號碼歸屬地查詢的服務
使用第一種:wsimport 產生本地代碼調用
使用第二種:使用urlConnect 調用天氣預報..
第四種調用方式:通過ajax 去調用webservice
xmlhttpRequest 對象時瀏覽器內建的一個對象,可以通過此對象發送一個http請求,傳送xml格式的資料到服務端
(類比soap 協議...)
不能訪問:跨域(a 網站的js訪問b網站的請求...)
wsdl 服務說明的詳解
webservice 加深:
通過webservice 的用戶端與服務端的幾種調用方式,通過tcp ip/monitor監控webservice請求的過程
攔截請求的資料,對資料進行分析...
webservice 的用戶端與服務端進行互動的時候,
第一次通過get 請求wsdl的服務說明書
第二次通過post 的方式 請求webservice服務...
webservice 的總結
理解wsdl 服務的說明書:
我們可以通過修改註解來修改wsdl 服務說明書的描述。
如果修改了說明書,則會影響wsimport 產生的本地代碼....
擴充:怎麼做一個網頁的播放器
三種方式:
第一種方式:通過js 把window media player調出來
第二種方式:adobefalsh 裡面有一種語言actionscript可以操作硬體:網路攝影機,麥克風,擴音器。。。
各大瀏覽器對adobefalsh 提供支援,adobeflash裡面的actionscript對js提供了介面,js就可以actionscript
完成播放的一些功能...
第三種方式:通過html5 來完成播放器的製作。
【黑馬Android】(14)webservice概念/調用/wsdl介面