編輯:關於Android編程
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)
調用服務:我們可以通過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文件
第一種方式調用。
第一種方式調用:通過wsimport
工具1:webservice explorer(通過圖形化界面的方式調用webservice)
工具2:tcp/ip Monitor 可以攔截webservice客戶端與webservice服務端進行交互的整個過程以及數據傳輸的格式..
第二種方式調用:通過java jdk自帶的一個類URLConnect(可以發送一個http請求)
原理:我們可以通過URLConnect 這個對象,發送一個http請求,往webservice服務端 傳送xml格式的數據,
模擬soap 協議,因為soap協議就是在http的基礎上傳送xml格式的數據..
第三種方式調用:通過客戶端編程的方式調用 webservice 我們需要通過java jdk自帶的類 Service,同時,我們需要依賴一個接口,這個接口我們可以通過wsimport生成的本地代碼當中獲取...
1,調用互聯網上手機號碼歸屬地查詢的服務
使用第一種:wsimport 生成本地代碼調用
使用第二種:使用urlConnect 調用天氣預報..
第四種調用方式:通過ajax 去調用webservice
xmlhttpRequest 對象時浏覽器自帶的一個對象,可以通過此對象發送一個http請求,傳送xml格式的數據到服務端
(模擬soap 協議...)
不能訪問:跨域(a 站點的js訪問b站點的請求...)
webservice 加深:
通過webservice 的客戶端與服務端的幾種調用方式,通過tcp ip/monitor監控webservice請求的過程
攔截請求的數據,對數據進行分析...
webservice 的客戶端與服務端進行交互的時候,
第一次通過get 請求wsdl 的服務說明書
第二次通過post 的方式 請求webservice 服務...
理解wsdl 服務的說明書:
我們可以通過修改注解來修改wsdl 服務說明書的描述。
如果修改了說明書,則會影響wsimport 生成的本地代碼....
擴展:怎麼做一個網頁的播放器
三種方式:
第一種方式:通過js 把window media player 調出來
第二種方式:adobefalsh 裡面有一種語言actionscript可以操作硬件:攝像頭,麥克風,揚聲器。。。
各大浏覽器對adobefalsh 提供支持,adobeflash裡面的actionscript對js提供了接口,js就可以actionscript
完成播放的一些功能...
第三種方式:通過html5 來完成播放器的制作。
創建一個Android應用程序 Android Application Project 設置工程的相關信息,默認會創建icon和activity
SAX是一個解析速度快並且占用內存少的xml解析器,非常適合用於Android等移動設備。 SAX解析XML文件采用的是事件驅動,也就是說,它並不需要解析完整個文檔,在按
我們常用context.startService()來啟動一個service,下面來分析一下這個service的啟動過程,下圖是service啟動的序列圖: st
微信朋友圈值乎怎麼玩?大家是否還記得微信紅包看照片的活動?現在知乎也推出了一個新的活動,那就是如果你想看完我的整篇文章,請付錢。 哈哈~是不是很有意思呢?