在写这个小程序之前,我对webservice可谓是一无所知。在查了一系列的资料,经过多日的阅读之后,终于有了一点小理解。所以,在这里就简要的说一下。
W3C组织对Web Service的官方定义是:Web Service 是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序的接口所组成的,它们通过网络,例如国际互联网的远程服务器端,执行客户所提交服务的请求。
其实,Web Service就是一个函数的远程调用。比如我有一个Web Service,它实现的就是一个求和的函数,当用户请求我的Web Service时,通过网络给我两个数13和14,我调用了这个函数计算了一下,得出结果27,之后再通过网络返回给用户,这就是一个简单的Web Service的模型。
首先,要做的是下载一个KSOAP包,在android sdk中没有提供调用webservice的库,所以要用第三方提供的sdk的来调用webservice。(好吧,这都是网上的说法,我就这么照着做了)
在这个程序中用到了SoapObject类,但貌似没有看见详细解释这个类的文章,所以只能照着网上的例子中的用法来实现我的android天气预报。
1.SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);它传进去的第一个参数是所谓的命名空间,我的理解就是把我们要调用的给我们提供天气信息的网站给传进去,它就知道该从哪得到相关的天气信息。第二个参数就是方法名,我用的是getWeatherbyCityName,通过城市名来获取天气信息。
2.用addProperty方法来把城市名称传入(据说可以不和服务器端的参数名一致)。
3.创建SoapSerializationEnvelope对象。
4.创建HttpTransportsSE对象
5、使用call方法调用WebService方法。
6、获得WebService方法的返回结果,其中有两种方法可以获得返回的结果,一是调用getResponse方法,二是调用getProperty方法。经过我的实践,两种方法都可以实现这一目的,在我的程序中两者都有用到。
在做完了这些工作之后,还需要在AndroidManifest.xml 文件,赋予相应权限,不然就会没有相应的权限来执行这个。
说实话,在经过这一系列的操作之后,也就是说我还知道一步一步该怎么做的流程,却没有很详细地理解,每一步究竟为何要这么做。感觉就是按照那些步骤一步一步做下来似乎是很容易,但是,要真正开发出一个健壮的webservice,还要学习很多的技术,而且这些技术也还在不断地发展中。所以说,学习还是一个任重而道远的过程,还有很长的一段路要走!