Android(安卓)WebService
16lz
2021-01-25
Android WebService 一、WebService 按某种数据规范发布的一种服务形式,为应用程序提供相应数据。 如这个天气预报Web服务: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 二、简单样例
搜索Android WebService就可以找到很多了==,就简单讲讲了。
1)一样使用的是KSOAP第三方类库在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基础样例》里有一个这方面的简单例子。
- /**
- *访问WebService
- *
- *@parammethodName
- *WebService方法名
- *@parampropertyInfo
- *WebService方法参数
- *@returnSoapObject返回结果
- */
- privateSoapObjectvisitWebService(StringmethodName,
- PropertyInfopropertyInfo)throwsException{
- if(null!=onWebServiceListener){
- onWebServiceListener.onStart();
- }
- //第1步:创建SoapObject对象,并指定WebService的命名空间和调用的方法名
- SoapObjectrequest=newSoapObject(Code.SERVICE_NAMESPACE,methodName);
- //第2步:设置WebService方法的参数
- if(null!=propertyInfo){
- request.addProperty(propertyInfo);
- }
- //第3步:创建SoapSerializationEnvelope对象,并指定WebService版本
- SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(
- SoapEnvelope.VER11);
- //设置bodyOut属性
- envelope.bodyOut=request;
- //需要设置dotNet属性,否则报错
- envelope.dotNet=true;
- envelope.setOutputSoapObject(request);
- envelope.encodingStyle="UTF-8";
- //第4步:创建HttpTransportSE对象并指定WSDL文档的URL
- HttpTransportSEht=newHttpTransportSE(Code.SERVICE_URL);
- try{
- //第5步:调用WebService
- //ht.call(null,envelope);
- //需要设置SOAPAction的值,否则报错
- ht.call(Code.SERVICE_NAMESPACE+methodName,envelope);
- //第6步:使用getResponse方法获得WebService方法的返回结果
- SoapObjectsoapObject=(SoapObject)envelope.getResponse();
- //SoapObjectsoapObject=(SoapObject)envelope.bodyIn;
- Log.v("返回结果","="+soapObject);
- returnsoapObject;
- }catch(Exceptione){
- e.printStackTrace();
- Log.e("HttpTransportSE.call","调用WebService出错!");
- if(null!=onWebServiceListener){
- onWebServiceListener.onError();
- }
- throwe;
- }
- }
更多相关文章
- Android-Activity介绍
- Android(安卓)实现轮播图效果(二) 底部圆点布局实现
- Android(安卓)BroadcastReceiver小结
- Android(安卓)MediaPlayer
- [置顶] Android(安卓)怎么退出整个应用程序?__以及__按键事件捕获
- Android(安卓)WebView封装及定制js的alert,confirm和prompt对话
- Android(安卓)设置屏幕不待机
- Android集成微信SDK:微信分享
- Android(java)学习笔记68:同步代码块的锁和同步方法的应用