1.例子介绍

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

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

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

输出:该邮政编码对应城市的天气预报。
2.实现步骤如下

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

<!-- Permissions -->

<uses-permission Android:name="Android.permission.INTERNET" />

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

private static final String SERVER_URL = "http://www.webservicex.net/WeatherForecast. asmx/GetWeatherByZipCode"; //定义需要获取的内容来源地址

HttpPost request = new HttpPost(SERVER_URL); //根据内容来源地址创建一个Http请求

// 添加一个变量

List <NameValuePair> params = new ArrayList <NameValuePair>();

// 设置一个华盛顿区号

params.add(new BasicNameValuePair("ZipCode", "200120")); //添加必须的参数

request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); //设置参数的编码

try {

HttpResponse httpResponse = new DefaultHttpClient().execute(request); //发送请求并获取反馈

// 解析返回的内容

if(httpResponse.getStatusLine().getStatusCode() != 404)

{

String result = EntityUtils.toString(httpResponse.getEntity());

Log.d(LOG_TAG, result);

}

} catch (Exception e) {

Log.e(LOG_TAG, e.getMessage());

}

代码解释:

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

<WeatherForecasts xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http: //www.w3.org/2001/XMLSchema-instance" xmlns="http://www.webservicex.net">

<Latitude>38.97571</Latitude>

<Longitude>77.02825</Longitude>

<AllocationFactor>0.024849</AllocationFactor>

<FipsCode>11</FipsCode>

<PlaceName>WASHINGTON</PlaceName>

<StateCode>DC</StateCode>

<Details>

<WeatherData>

<Day>Saturday, April 25, 2009</Day>

<WeatherImage>http://forecast.weather.gov/images/wtf/sct.jpg</WeatherImage>

<MaxTemperatureF>88</MaxTemperatureF>

<MinTemperatureF>57</MinTemperatureF>

<MaxTemperatureC>31</MaxTemperatureC>

<MinTemperatureC>14</MinTemperatureC>

</WeatherData>

<WeatherData>

<Day>Sunday, April 26, 2009</Day>

<WeatherImage>http://forecast.weather.gov/images/wtf/few.jpg</WeatherImage>

<MaxTemperatureF>89</MaxTemperatureF>

<MinTemperatureF>60</MinTemperatureF>

<MaxTemperatureC>32</MaxTemperatureC>

<MinTemperatureC>16</MinTemperatureC>

</WeatherData>



</Details>

</WeatherForecasts>

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

更多相关文章

  1. 关于selector点击区域放大问题的解决
  2. Android获取屏幕或View宽度和高度的方法
  3. Android的Drawable和Bitmap之间相关转换
  4. Android-动态注册广播和注销广播
  5. Android通过GPS或NetWork获取当前位置信息
  6. Android(安卓)网络提交数据(使用Asynchronous Http Client)
  7. Android(安卓)获取图库中图片的坑
  8. Android之微信开放平台创建应用
  9. Android(安卓)官方数据绑定 Data Binding Library

随机推荐

  1. Android常用加密库集合
  2. Android(安卓)弹出框LemonBubble提示控件
  3. android studio 通过svn导入eclipse项目
  4. Android中向ContactsProvider中插入大量
  5. 在android中使用OpenGL
  6. C基础—函数指针,联合体,枚举,结构体和结
  7. I hope Android will implement and supp
  8. Android 2.3 r1 中文API (78)―― ViewAnim
  9. Android Service生命周期
  10. 读书计划