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(簡單對象訪問協議) 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 來完成播放器的製作。