资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,Web Service,发布及调用,Web,服务(,Web Services,),是一段位于,Internet,上的业务逻辑。可以通过基于标准的,Internet,协议,(,如,HTTP,或,SMTP),访问。,Web,服务技术已经掀起了,IT,业的浪潮,无论是平台供应商、解决方案供应商,还是服务提供商都纷纷在自己的平台、解决方案以及服务中加入了,Web Services,。以,Microsoft,,,IBM,,,Oracle,,,HP,,,BEA,,,SAP,等为首的计算机业巨头们无一例外地将自己的软件产品,/,解决方案全面支持,WebServices,。,使用,Web Service,进行网络编程,Web Service,中使用的主要技术:,SOAP(Simple,Object Access Protocol),:简单对象访问协议。,WSDL(Web,Service Description Language),:,Web Service,描述语言。,UDDI(Universal,Description, Description and Integration),统一描述、发现和整合协议。,Android,应用调用,Web Service,由于手机平台的限制,,Android,应用一般充当,Web Service,的客户端,调用远程的,Web Service,。,Google,为,Android,平台开发,Web Service,客户端提供了,ksoap2-android,项目,但这个项目并未直接集成在,Android,平台中,需要开发人员自行下载。,Android,应用调用,Web Service,使用,ksoap2-android,调用,Web Service,的操作步骤如下:,创建,HttpTransportSE,对象,该对象用于调用,Web Service,操作。,创建,SoapSerializationEnvelope,对象。,创建,SoapObject,对象,创建该对象时需要传入所调用,Web,Service,的命名空间、,Web Service,的方法名。,Android,应用调用,Web Service,如果有参数需要传给,Web Service,服务器端,调用,SoapObject,对象的,addProperty(String,name, Object value),方法设置参数。,调用,SoapSerializationEnvelope,的,setOutputSoapObject,(),方法或者设置,bodyOut,属性,将前面创建的,SoapObject,对象设为,SoapSerializationEnvelope,的传出,SOAP,消息体。,调用对象的,call(),方法,并以,SoapSerializationEnvelope,作为参数调用远程,Web Service,。,Android,应用调用,Web Service,调用完成后,访问,SoapSerializationEnvelope,对象的,bodyIn,属性,该属性返回一个,SoapObject,对象,解析该,SoapObject,对象,即可获取调用,Web Service,的返回值。,android,调用,WebService,下载,KSoap2,包,ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar,调用,WebService,(,一,),设定,Web Services,的命名空间和调用的方法名称,String NAMESPACE = http:/,WebX,/;,String METHOD_NAME = ,getWeatherbyCityName,;,SoapObject,rpc,= new,SoapObject(NAMESPACE, METHOD_NAME);,调用,WebService,(,二,),设置调用方法的参数值,如果没有参数,可以省略,rpc.addProperty(“theCityName,”, “,武汉,);,addProperty,方法的第,1,个参数虽然表示调用方法的参数名,但该参数值并不一定与服务端的,WebService,类中的方法参数名一致,只要设置参数的顺序一致即可,调用,WebService,(,三,),生成调用,Webservice,方法的,SOAP,请求信息。,SoapSerializationEnvelope,envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);,envelope.bodyOut,=,rpc,;,envelope.dotNet,= true;,envelope.setOutputSoapObject(rpc,);,调用,WebService,(,四,),创建,HttpTransportsSE,对象。,String URL = http:/, = new,HttpTransportSE(URL,);,ht.debug,= true;,调用,WebService,(,五,),使用,call,方法调用,WebService,方法,String SOAP_ACTION = http:/,WebX envelope);,注意网络权限,调用,WebService,(,六,),使用,getResponse,方法获得返回数据。,private,SoapObject,detail;,detail =(,SoapObject,),envelope.getResponse,();,使用结果(一),使用结果(二),String date = detail.getProperty(6).toString();,weatherToday,= ,今天:, +,date.split,( )0;,weatherToday,+= n,天气:, +,date.split,( )1;,weatherToday,+= + n,气温:, + detail.getProperty(5).toString();,weatherToday,+= n,风力:, + detail.getProperty(7).toString() + n;,自定义,webservice,新建,webservice,project,创建,webservice,使用,webservice,浏览器,客户端调用,public static void,main(String,args,) throws Exception ,Client,client,= new Client(,new URL(http:/localhost:8080/MyWebService/services/HelloService?WSDL),);,/,利用,java,的反射机制可以远程地得到已经在,wsdl,中声明的对象,Object results =,client.invoke(example, new,Objectjacob.Ye,);,System.out.println(results0 + results0);,
展开阅读全文