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调用Web Service的基本流程,从理解Web Service的概念,到选择合适的库(如Ksoap2),再到构建请求、解析响应、处理异常以及UI显示。通过这个实例,开发者可以掌握在Android平台上...
在Android开发中,调用Web ...通过学习和理解这些资源,开发者可以成功地在Android应用中调用天气Webservice,获取并显示实时天气信息。记住,实际项目中还需要处理网络异常、数据解析错误等情况,确保用户体验的顺畅。
在Android开发中,调用Web ...总之,Android调用Web Service获取天气预报涉及网络通信、数据解析、异常处理、UI设计等多个方面,通过合理的技术选型和规范的编程实践,可以构建出高效、稳定且用户体验良好的应用。
比如常用的手机号码归属地查询和天气预报服务,它们提供了JSON格式的接口供客户端调用以获取信息。 而基于SOAP协议的数据交互,则是通过调用Web Service来实现。Web Service在服务器端发布后,为Android客户端提供...
本案例 只涉及调用Webservice的API进行天气查询,对于其中的界面等没有进行美化,对返回值未进行逐个提取,因为本案例只涉及如何调用Webservice
在Android开发中,调用外部Web服务,如天气预报API,是常见的功能需求。本教程将专注于如何在Android应用中实现这一功能,特别是在这个名为"WeatherSearch"的项目中。我们将探讨以下几个关键知识点: 1. **Android...
总结来说,Android调用Web Service查询天气预报涉及的关键技术包括:网络请求(如HttpURLConnection或OkHttp)、数据解析(如JSON解析)、UI设计与更新、异常处理以及数据缓存。这些都是Android开发者必备的基础技能...
Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同系统之间进行数据交换和功能调用。本示例“webservice 调用demo”将介绍两种常见的Web服务调用方法,帮助你理解如何简单实现这些调用。 1. ...
总的来说,ksoap2-android为Android开发者提供了一种方便的方式来调用SOAP Web服务,获取如天气预报这样的远程数据。虽然现代的API通常采用JSON格式并使用RESTful架构,但理解如何使用ksoap2-android仍然是学习...
通过实践这个项目,不仅可以掌握Android调用Web Service的基本流程,还能提升Android应用开发的综合能力。同时,设计和实现毕业设计项目也能锻炼问题解决能力和文档撰写能力,对未来的软件工程师职业生涯大有裨益。
【Android开发之WebService介绍】 在Android开发中,与远程服务器进行数据交互是常见的...通过使用WebService,开发者可以轻松地集成各种服务,如天气预报、地图定位、支付接口等,极大地扩展了Android应用的功能。
### Android WebService应用详解 #### 一、概述 在Android开发中,客户端应用程序与服务器端进行数据交互是非常常见的需求之一。这种交互可以通过多种方式实现,其中一种常用的方式就是使用WebService。WebService...
在这个场景下,我们将探讨如何利用`HttpURLConnection`来调用.NET平台上的WebService服务。 **一、HttpURLConnection简介** `HttpURLConnection`是Java `java.net`包中的一个类,它提供了HTTP协议的连接、读写功能...
标题中的“webservice调用天气预报”指的是利用Web服务技术来获取和展示不同城市省份的天气预报信息。 在Java开发环境中,IntelliJ IDEA(简称IDEA)是一款广泛使用的集成开发环境,它提供了方便的工具来创建和消费...
在本篇文章中,我们将使用 LabVIEW 调用 WebService 来访问天气预报数据。首先,我们需要获取天气 Web 服务接口,例如:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。然后,我们使用 cmd 来生成 ...
在Android平台上开发一款基于Web服务的天气预报应用是一项常见的任务,尤其当涉及到实时获取和展示未来三天天气信息时。此项目的核心在于如何有效地利用WebService接口来获取数据,并将其转化为用户友好的界面展示。...
在Android开发中,调用Web ...综上所述,Android调用Web Service涉及到网络编程、XML/JSON解析、线程管理和安全措施等多个方面。通过理解这些知识点,开发者可以构建功能丰富的Android应用,与远程服务器进行有效交互。
本项目是一个天气预报项目源码,可以设置城市、可以更换应用内背景图片、自带天气widget小组件等,天气信息由m.weather.com.cn提供,比较给力的是本项目自带一个20多页的设计论文,比较适合新手学习和参考。...