`
qq466862016
  • 浏览: 128455 次
  • 来自: 杭州
社区版块
存档分类
最新评论

Android 调用中国气象的webservice

阅读更多
package cn.com.ultrapower.weather.ws;

import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

public class WebServiceUtil
{
	// 定义Web Service的命名空间
	static final String SERVICE_NS = "http://WebXml.com.cn/";
	// 定义Web Service提供服务的URL
	static final String SERVICE_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";

	/**
	 * 获得州,国内外省份和城市信息
	 * 
	 * @return
	 */
	public static List<String> getProvinceList()
	{

		// 需要调用的方法名(获得本天气预报Web Services支持的洲、国内外省份和城市信息)
		String methodName = "getRegionProvince";
		// 创建HttpTransportSE传输对象
		HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);

		httpTranstation.debug = true;
		// 使用SOAP1.1协议创建Envelop对象
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);
		// 实例化SoapObject对象
		SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
		envelope.bodyOut = soapObject;
		// 设置与.Net提供的Web Service保持较好的兼容性
		envelope.dotNet = true;
		try
		{
			// 调用Web Service
			httpTranstation.call(SERVICE_NS + methodName, envelope);
			if (envelope.getResponse() != null)
			{
				// 获取服务器响应返回的SOAP消息
				SoapObject result = (SoapObject) envelope.bodyIn;
				SoapObject detail = (SoapObject) result.getProperty(methodName
						+ "Result");
				// 解析服务器响应的SOAP消息。
				return parseProvinceOrCity(detail);
			}
		} catch (Exception e)
		{
			e.printStackTrace();
		}

		return null;
	}

	/**
	 * 根据省份获取城市列表
	 * 
	 * @param province
	 * @return
	 */
	public static List<String> getCityListByProvince(String province)
	{

		// 需要调用的方法名(获得本天气预报Web Services支持的城市信息,根据省份查询城市集合:带参数)
		String methodName = "getSupportCityString";
		
		HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);
		httpTranstation.debug = true;
		
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
		soapObject.addProperty("theRegionCode", province);
		envelope.bodyOut = soapObject;
		envelope.dotNet = true;
		try
		{
			// 调用Web Service
			httpTranstation.call(SERVICE_NS + methodName, envelope);
			if (envelope.getResponse() != null)
			{
				// 获取服务器响应返回的SOAP消息
				SoapObject result = (SoapObject) envelope.bodyIn;
				SoapObject detail = (SoapObject) result.getProperty(methodName
						+ "Result");
				// 解析服务器响应的SOAP消息。
				return parseProvinceOrCity(detail);
			}
		} catch (Exception e)
		{
			e.printStackTrace();
		}

		return null;

	}

	private static List<String> parseProvinceOrCity(SoapObject detail)
	{
		ArrayList<String> result = new ArrayList<String>();
		for (int i = 0; i < detail.getPropertyCount(); i++)
		{
			String str = detail.getProperty(i).toString();
			// 解析出每个省份
			result.add(str.split(",")[0]);
		}
		return result;
	}

	public static SoapObject getWeatherByCity(String cityName)
	{

		// 根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数
		String methodName = "getWeather";
		
		HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);
		httpTranstation.debug = true;
		
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);
		SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
		soapObject.addProperty("theCityCode", cityName);
		envelope.bodyOut = soapObject;
		envelope.dotNet = true;
		
		try
		{
			// 调用Web Service
			httpTranstation.call(SERVICE_NS + methodName, envelope);
			if (envelope.getResponse() != null)
			{
				// 获取服务器响应返回的SOAP消息
				SoapObject result = (SoapObject) envelope.bodyIn;
				SoapObject detail = (SoapObject) result.getProperty(methodName
						+ "Result");
				// 解析服务器响应的SOAP消息。
				return detail;
			}
		} catch (Exception e)
		{
			e.printStackTrace();
		}

		return null;
	}

}

 

分享到:
评论

相关推荐

    Android之Webservice详解与调用天气预报Webservice完整实例

    综上所述,这个实例涵盖了Android调用Web Service的基本流程,从理解Web Service的概念,到选择合适的库(如Ksoap2),再到构建请求、解析响应、处理异常以及UI显示。通过这个实例,开发者可以掌握在Android平台上...

    Android调用天气Webservice

    在Android开发中,调用Web ...通过学习和理解这些资源,开发者可以成功地在Android应用中调用天气Webservice,获取并显示实时天气信息。记住,实际项目中还需要处理网络异常、数据解析错误等情况,确保用户体验的顺畅。

    android调用webservice获取天气

    在Android开发中,调用Web ...总之,Android调用Web Service获取天气预报涉及网络通信、数据解析、异常处理、UI设计等多个方面,通过合理的技术选型和规范的编程实践,可以构建出高效、稳定且用户体验良好的应用。

    Android调用Java WebService的实现方法.pdf

    比如常用的手机号码归属地查询和天气预报服务,它们提供了JSON格式的接口供客户端调用以获取信息。 而基于SOAP协议的数据交互,则是通过调用Web Service来实现。Web Service在服务器端发布后,为Android客户端提供...

    android 调用WebService访问天气

    本案例 只涉及调用Webservice的API进行天气查询,对于其中的界面等没有进行美化,对返回值未进行逐个提取,因为本案例只涉及如何调用Webservice

    android调用天气预报的webservice

    在Android开发中,调用外部Web服务,如天气预报API,是常见的功能需求。本教程将专注于如何在Android应用中实现这一功能,特别是在这个名为"WeatherSearch"的项目中。我们将探讨以下几个关键知识点: 1. **Android...

    android调用webservice查询天气预报

    总结来说,Android调用Web Service查询天气预报涉及的关键技术包括:网络请求(如HttpURLConnection或OkHttp)、数据解析(如JSON解析)、UI设计与更新、异常处理以及数据缓存。这些都是Android开发者必备的基础技能...

    webservice 调用demo

    Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同系统之间进行数据交换和功能调用。本示例“webservice 调用demo”将介绍两种常见的Web服务调用方法,帮助你理解如何简单实现这些调用。 1. ...

    Android中ksoap2-android调用WebService 实现天气预报

    总的来说,ksoap2-android为Android开发者提供了一种方便的方式来调用SOAP Web服务,获取如天气预报这样的远程数据。虽然现代的API通常采用JSON格式并使用RESTful架构,但理解如何使用ksoap2-android仍然是学习...

    Android应用源码调用webservice实现天气预报带论文

    通过实践这个项目,不仅可以掌握Android调用Web Service的基本流程,还能提升Android应用开发的综合能力。同时,设计和实现毕业设计项目也能锻炼问题解决能力和文档撰写能力,对未来的软件工程师职业生涯大有裨益。

    Android开发之WebService介绍

    【Android开发之WebService介绍】 在Android开发中,与远程服务器进行数据交互是常见的...通过使用WebService,开发者可以轻松地集成各种服务,如天气预报、地图定位、支付接口等,极大地扩展了Android应用的功能。

    android webserviceandroid webserviceandroid

    ### Android WebService应用详解 #### 一、概述 在Android开发中,客户端应用程序与服务器端进行数据交互是非常常见的需求之一。这种交互可以通过多种方式实现,其中一种常用的方式就是使用WebService。WebService...

    HttpURLConnection调用.net WebService

    在这个场景下,我们将探讨如何利用`HttpURLConnection`来调用.NET平台上的WebService服务。 **一、HttpURLConnection简介** `HttpURLConnection`是Java `java.net`包中的一个类,它提供了HTTP协议的连接、读写功能...

    webservice调用天气预报

    标题中的“webservice调用天气预报”指的是利用Web服务技术来获取和展示不同城市省份的天气预报信息。 在Java开发环境中,IntelliJ IDEA(简称IDEA)是一款广泛使用的集成开发环境,它提供了方便的工具来创建和消费...

    labview调用webservice访问远程数据1

    在本篇文章中,我们将使用 LabVIEW 调用 WebService 来访问天气预报数据。首先,我们需要获取天气 Web 服务接口,例如:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。然后,我们使用 cmd 来生成 ...

    基于android的天气预报——调用WebService服务的查询三天内的天气

    在Android平台上开发一款基于Web服务的天气预报应用是一项常见的任务,尤其当涉及到实时获取和展示未来三天天气信息时。此项目的核心在于如何有效地利用WebService接口来获取数据,并将其转化为用户友好的界面展示。...

    android调用webservice

    在Android开发中,调用Web ...综上所述,Android调用Web Service涉及到网络编程、XML/JSON解析、线程管理和安全措施等多个方面。通过理解这些知识点,开发者可以构建功能丰富的Android应用,与远程服务器进行有效交互。

    Android应用源码调用webservice实现天气预报带论文.zip

    本项目是一个天气预报项目源码,可以设置城市、可以更换应用内背景图片、自带天气widget小组件等,天气信息由m.weather.com.cn提供,比较给力的是本项目自带一个20多页的设计论文,比较适合新手学习和参考。...

Global site tag (gtag.js) - Google Analytics