Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 【黑馬Android】(14)webservice概念/調用/wsdl接口

【黑馬Android】(14)webservice概念/調用/wsdl接口

編輯:關於Android編程

 

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生成的本地代碼當中獲取...

\

 

 

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 來完成播放器的制作。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved