Android WebService 一、WebService 按某种数据规范发布的一种服务形式,为应用程序提供相应数据。 如这个天气预报Web服务: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 二、简单样例

搜索Android WebService就可以找到很多了==,就简单讲讲了。

1)一样使用的是KSOAP第三方类库
        
  1. /**
  2. *访问WebService
  3. *
  4. *@parammethodName
  5. *WebService方法名
  6. *@parampropertyInfo
  7. *WebService方法参数
  8. *@returnSoapObject返回结果
  9. */
  10. privateSoapObjectvisitWebService(StringmethodName,
  11. PropertyInfopropertyInfo)throwsException{
  12. if(null!=onWebServiceListener){
  13. onWebServiceListener.onStart();
  14. }
  15. //第1步:创建SoapObject对象,并指定WebService的命名空间和调用的方法名
  16. SoapObjectrequest=newSoapObject(Code.SERVICE_NAMESPACE,methodName);
  17. //第2步:设置WebService方法的参数
  18. if(null!=propertyInfo){
  19. request.addProperty(propertyInfo);
  20. }
  21. //第3步:创建SoapSerializationEnvelope对象,并指定WebService版本
  22. SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(
  23. SoapEnvelope.VER11);
  24. //设置bodyOut属性
  25. envelope.bodyOut=request;
  26. //需要设置dotNet属性,否则报错
  27. envelope.dotNet=true;
  28. envelope.setOutputSoapObject(request);
  29. envelope.encodingStyle="UTF-8";
  30. //第4步:创建HttpTransportSE对象并指定WSDL文档的URL
  31. HttpTransportSEht=newHttpTransportSE(Code.SERVICE_URL);
  32. try{
  33. //第5步:调用WebService
  34. //ht.call(null,envelope);
  35. //需要设置SOAPAction的值,否则报错
  36. ht.call(Code.SERVICE_NAMESPACE+methodName,envelope);
  37. //第6步:使用getResponse方法获得WebService方法的返回结果
  38. SoapObjectsoapObject=(SoapObject)envelope.getResponse();
  39. //SoapObjectsoapObject=(SoapObject)envelope.bodyIn;
  40. Log.v("返回结果","="+soapObject);
  41. returnsoapObject;
  42. }catch(Exceptione){
  43. e.printStackTrace();
  44. Log.e("HttpTransportSE.call","调用WebService出错!");
  45. if(null!=onWebServiceListener){
  46. onWebServiceListener.onError();
  47. }
  48. throwe;
  49. }
  50. }
在org.join.weather.util内的WebService把Web服务提供的所有接口都装在里面了。 记得当时主要有个怎么从多行多列的返回结果中的获得信息的问题。开始用正则,后来直接下网页进行XML解析,提高了很多效率。 2)界面划成了三块,用的别人的画廊组件(加了点东西,中文注释的就是我加的了==) 组件见包org.join.weather.widget下的FlingGallery。包内另一个MySpinner则是扩展的组件,用于省份和城市的联动。 顺便提下左右滑屏也可以用Android扩展的android-support-v4.jar内的ViewPager。 3)其他问题 1、网络刚开始只当是Wifi(怨念==),后来才修改成了连接状态,总之流程感觉怪怪的了。在org.join.weather.broadcast的WifiReceiver内还可以看到注释的旧代码。 2、GPSUtil那块,如果未开启GPS时会跳转到设置,但你不开启回来再操作,会有个provider=null的异常未处理。另外,不确定能不能定到位了。还发现三个定位模式的代码都有写(没印象了,�澹�。 4)截个图,看看效果吧

三、后记 源码问题多多,还请各位大哥多多包涵了T^T。 ps:如果想自己发布WebService自己访问什么的,我的《 Android基础样例》里有一个这方面的简单例子。

更多相关文章

  1. Android-Activity介绍
  2. Android(安卓)实现轮播图效果(二) 底部圆点布局实现
  3. Android(安卓)BroadcastReceiver小结
  4. Android(安卓)MediaPlayer
  5. [置顶] Android(安卓)怎么退出整个应用程序?__以及__按键事件捕获
  6. Android(安卓)WebView封装及定制js的alert,confirm和prompt对话
  7. Android(安卓)设置屏幕不待机
  8. Android集成微信SDK:微信分享
  9. Android(java)学习笔记68:同步代码块的锁和同步方法的应用

随机推荐

  1. “tns doctor” “You need to have the
  2. Android 折叠效果示例
  3. Android时间互换代码
  4. Annotation processors must be explicit
  5. Android 图片裁剪功能实现详解(类似QQ自定
  6. 【Android(安卓)开发】:TextView的几种使
  7. Anroid中的任务、进程和线程
  8. android 时间,日期对话框
  9. Android 隐藏类的使用
  10. android实现模拟加载中的效果