【黑马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,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("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 工具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 来完成播放器的制作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |