【黑馬Android】(14)webservice概念/調用/wsdl介面

來源:互聯網
上載者:User

標籤:

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介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.