前面介绍的几种存储都是将数据存储在本地设备上,除此之外,还有一种存储(获取)数据的方式,通过网络来实现数据的存储和获取,下面看一个在Android上调用WebService的例子。

注意在Android的早期版本中,曾经支持过进行XMPP Service和Web Service的远程访问。Android SDK 1.0以后的版本对它以前的API作了许多的变更。Android 1.0以上版本不再支持XMPP Service,而且访问Web Service的API全部变更。

1.例子介绍

通过邮政编码查询该地区的天气预报,以POST发送的方式发送请求到webservicex.net站点,访问WebService.webservicex.net站点上提供查询天气预报的服务,具体信息请参考其WSDL文档,网址为:

http://www.webservicex.net/WeatherForecast.asmx?WSDL。

输入:美国某个城市的邮政编码。

输出:该邮政编码对应城市的天气预报。

2.实现步骤如下

(1)如果需要访问外部网络,则需要在AndroidManifest.xml文件中加入如下代码申请权限许可:

 
  1. <!--Permissions-->
  2. <uses-permissionAndroid:name="Android. permission.INTERNET"/>

(2)以HTTP POST的方式发送(注意:SERVER_URL并不是指WSDL的URL,而是服务本身的URL)。实现的代码如下所示:

 
  1. privatestaticfinalStringSERVER_URL= "http://www.webservicex.net/WeatherForecast. asmx/GetWeatherByZipCode";//定义需要获取的内容来源地址
  2. HttpPostrequest=newHttpPost(SERVER_URL); //根据内容来源地址创建一个Http请求
  3. //添加一个变量
  4. List<NameValuePair>params=newArrayList<NameValuePair>();
  5. //设置一个华盛顿区号
  6. params.add(newBasicNameValuePair("ZipCode", "200120"));//添加必须的参数
  7. request.setEntity(newUrlEncodedFormEntity(params, HTTP.UTF_8));//设置参数的编码
  8. try{
  9. HttpResponsehttpResponse=newDefaultHttpClient(). execute(request);//发送请求并获取反馈
  10. //解析返回的内容
  11. if(httpResponse.getStatusLine().getStatusCode()!=404)
  12. {
  13. Stringresult=EntityUtils.toString(httpResponse.getEntity());
  14. Log.d(LOG_TAG,result);
  15. }
  16. }catch(Exceptione){
  17. Log.e(LOG_TAG,e.getMessage());
  18. }

代码解释:

如上代码使用Http从webservicex获取ZipCode为"200120"(美国WASHINGTON D.C)的内容,其返回的内容如下:

 
  1. <WeatherForecastsxmlns:xsd="http://www.w3.org/2001/ XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance"xmlns="http://www.webservicex.net">
  2. <Latitude>38.97571</Latitude>
  3. <Longitude>77.02825</Longitude>
  4. <AllocationFactor>0.024849</AllocationFactor>
  5. <FipsCode>11</FipsCode>
  6. <PlaceName>WASHINGTON</PlaceName>
  7. <StateCode>DC</StateCode>
  8. <Details>
  9. <WeatherData>
  10. <Day>Saturday,April25,2009</Day>
  11. <WeatherImage>http://forecast.weather.gov/ images/wtf/sct.jpg</WeatherImage>
  12. <MaxTemperatureF>88</MaxTemperatureF>
  13. <MinTemperatureF>57</MinTemperatureF>
  14. <MaxTemperatureC>31</MaxTemperatureC>
  15. <MinTemperatureC>14</MinTemperatureC>
  16. </WeatherData>
  17. <WeatherData>
  18. <Day>Sunday,April26,2009</Day>
  19. <WeatherImage>http://forecast.weather.gov/ images/wtf/few.jpg</WeatherImage>
  20. <MaxTemperatureF>89</MaxTemperatureF>
  21. <MinTemperatureF>60</MinTemperatureF>
  22. <MaxTemperatureC>32</MaxTemperatureC>
  23. <MinTemperatureC>16</MinTemperatureC>
  24. </WeatherData>
  25. </Details>
  26. </WeatherForecasts>

这个例子演示了如何在Android中通过网络获取数据,掌握该类内容,开发者需要熟悉java.net.*,Android.net.*这两个包的内容,在这就不赘述了,请读者参阅相关文档。

更多相关文章

  1. 关于获取Android中文件内容有感
  2. Android代码混淆
  3. Android源代码下载过程及遇到的问题
  4. 史上最全!最经典!最无私的Android资料(书籍+代码)分享
  5. android计时demo源代码
  6. Android写文件到SDCard的一般过程和代码
  7. android 代码混淆问题解决
  8. Android 小代码集

随机推荐

  1. Android ART 垃圾回收机制
  2. Android 开发笔记 —— AndroidStudio 中
  3. android的一些开源项目
  4. Android(安卓)开发绕不过的坑:你的 Bitmap
  5. Android(安卓)实现微信聊天一样的布局
  6. 为数不多的人知道的AndroidStudio快捷键(
  7. Android 轻松实现语音识别
  8. 高级控件之网格视图(GridView)
  9. android studio 4.0. gradle 4.0. tinker
  10. Android(安卓)- ToDoList(fragment) 详解