黑马Android(14)webservice概念/调用/wsdl接口

Posted 吴英强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑马Android(14)webservice概念/调用/wsdl接口相关的知识,希望对你有一定的参考价值。

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;

/**
 * 
 * 启动 服务端
 * @ 作者 zhuwu@itcast.cn
 *
 */
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 languageweb服务描述语言.. apixml,简称wsdl

soap(简单对象访问协议) webservice的客户端与服务端进行交互的时候走的协议

(soap 分两个版本(soap 1.1soap1.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,endpointjava 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("laofeng@sina.com.cn");
		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

工具1webservice explorer(通过图形化界面的方式调用webservice

 

工具2tcp/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里面的actionscriptjs提供了接口,js就可以actionscript

完成播放的一些功能...

第三种方式:通过html5 来完成播放器的制作。


以上是关于黑马Android(14)webservice概念/调用/wsdl接口的主要内容,如果未能解决你的问题,请参考以下文章

Android 黑马 52 期视频,不加密,免费下载

maven基础(黑马程序员 P1~P14)

maven基础(黑马程序员 P1~P14)

maven基础(黑马程序员 P1~P14)

黑马程序员14套经典IT教程+面试宝典

西安黑马JavaEE就业14期平均薪资6642元,毕业21个工作日,就业率42.31%