C#调用WebService获取天气信息

概述

  本文使用C#开发Winform应用程序,通过调用<WebXml/>(URL:http://www.webxml.com.cn)的WebService服务WeatherWS来获取天气预报数据。本程序所使用的Web服务的URL为:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx,此服务为“2400多个城市天气预报Web服务”。

  开发环境说明:

  • 系统平台:Windows 7(32bit);
  • 开发工具:VS2010;

实现过程

  本程序通过“添加Web引用”和“使用WSDL文件”两种方式实现WebService服务的调用。

1、添加Web引用

  首先,新建一个WinForm应用程序,在“解决方案管理器”中为该工程添加Web引用:右击工程-->添加服务引用,弹出如下“服务引用设置”对话框:

  

  点击该对话框“添加Web引用”按钮,弹出“Web引用”对话框,在其中的URL处输入WeatherWS服务地址(http://ws.webxml.com.cn/WebServices/WeatherWS.asmx),点击转到“-->”按钮,修改Web引用名为“WebRefWeather”,如下图所示:

  

  此时,在需要获取天气信息的地方添加“获取天气核心代码”即可。我是在"按钮响应函数"中添加的,代码如下:

WebRefWeather.WeatherWS weather = new WebRefWeather.WeatherWS();
string[] str = new string[32];
try
{
    str = weather.getWeather("北京", "");
    MessageBox.Show(str[0] + "\n" + str[1] + "\n" + str[2] + "\n" + str[4] + "\n" + str[5], "天气信息");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

  程序运行后,点击按钮,即可显示天气信息,如下图所示:

  

2、使用WSDL文件

  此方法为通过使用VS工具由Web服务URL(http://ws.webxml.com.cn/WebServices/WeatherWS.asmx)或者本地的WeatherWS.asmx文件得到wsdl文件;然后由wsdl文件生成cs文件,即Web服务代理类,最后通过使用此类获取天气数据。即一下几步:

  • asmx文件 --> wsdl文件(VS2010工具:disco);
  • wsdl文件 --> cs文件(VS2010工具:wsdl);

  首先,看一下disco工具的帮助,如下图所示:

  

  通过如下命令,得到wsdl文件:

disco http://ws.webxml.com.cn/WebServices/WeatherWS.asmx

  如下图所示:

  

  然后,通过wsdl命令由wsdl文件生成cs文件,wsdl命令帮助如下:

  

  生成cs文件的命令如下:

wsdl /l:cs /n:NS_WeatherWS /out:WeatherWS.cs WeatherWS.wsdl

  即:

  

  此时,将cs文件加入到新建的Winform工程中,再在按钮的响应函数中加入如下核心代码:

NS_WeatherWS.WeatherWS weather = new NS_WeatherWS.WeatherWS();
string[] str = new string[32];
try
{
    str = weather.getWeather("北京", "");
    MessageBox.Show(str[0] + "\n" + str[1] + "\n" + str[2] + "\n" + str[4] + "\n" + str[5], "天气信息");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

  此时,运行程序,会出现如下错误:

命名空间“System.Web”中不存在类型或命名空间名称“Services”。是否缺少程序集?

  解决办法:在该工程中添加DotNet引用System.Web.Services即可,如下图所示:

  

  添加之后,再启动程序,程序即会启动成功。然后,点击按钮,即会像上一个方法一样显示天气信息,如下图所示:

  

时间: 2024-10-12 23:08:55

C#调用WebService获取天气信息的相关文章

webservice 获取天气信息

调用免费的web service获取天气预报信息 先找到天气预报提供webService网络地址: wsdl文件说明 http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx wsdl文件 http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 然后另存为webservice.wsdl 修改文件的<s:element ref="s:schema"/&

android-基于Webservice实现天气信息获取及源码下载(三)

本项目说明如下: 1.分别使用三种方式获取服务信息.soap.http get.http post三种方式实现信息的获取. 2.基于android调用webservice服务详细步骤实现 博文链接上一篇地址: android-基于Webservice实现天气信息获取及源码下载(一) android-基于Webservice实现天气信息获取及源码下载(二) 接上一篇博文讲述,省份列表和城市列表都是用了Adapter类,其实比较简单,代码如下: public class ProviceOrCityA

Java通过webservice接口获取天气信息

通过SOAP请求的方式获取天气信息并解析返回的XML文件. 参考: http://www.webxml.com.cn/WebServices/WeatherWS.asmx import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import javax.xml.par

性能优化之——.NET(C#)调用webService获取客户端IP地址所属区域(异步回调)(二)

朋友们这次分享的是异步回调不是异步调用哦! 请注意喽! 功能描述,接口地址,方法名称以及参数说明,同上篇:.NET(C#)调用webService获取客户端IP地址所属区域(非异步)(一)(LZ比较懒,不想写太多哦!(⊙0⊙)) 实现代码如下: 1 namespace main 2 { 3 class Program 4 { 5 public static string Result = string.Empty; 6 7 static void Main(string[] args) 8 {

利用json获取天气信息

天气预报信息获取是利用json获取的,网上有非常多资源,源码.因为上面涉及到非常多天气信息,包含湿度,出行建议等,以及加入了全部城市代码的资源包.为了练手了解json的原理.我仅获取诚笃城市的最高温,最低温,城市名字. 我的布局是通过一个button获取城市名字,最高温,最低温.main.xnl代码例如以下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo

Android——使用Volley+fastJson在新线程中读取网络接口获取天气信息

一,关于Volley 其实最初对于网络数据的访问,我是没想到要用框架的,使用HttpURLConnection或者HttpGet or HttpPost都可以实现.但是why? why I have to use Volley?   Before Volley: class HttpURLConnection_post extends Thread{ @Override public void run() { //设置请求的路径 String strUrl="http://api.qingyun

Python实战-天气预报项目-获取天气信息

天气预报首先需要的就是天气信息,可以从中国天气网的Wap网站上获取,因为Wap网站页面简单,便于抓取内容.网址是:http://wap.weather.com.cn/wap/,默认是北京的天气预报,可以更换城市.某城市的天气预报对应的网址是http://wap.weather.com.cn/wap/weather/city_code.shtml,其中city_code是城市代码.以南京市为例,南京的城市代码是101190101,所以对应的天气预报网址就是http://wap.weather.co

php定位并且获取天气信息

1 header("Content-type: text/html; charset=utf-8"); 2 class getWeather{ 3 private $ak; 4 5 public function __construct($ak){ 6 if($ak){ 7 $this->ak=$ak; 8 } else { 9 die('参数错误');exit; 10 } 11 12 } 13 14 /** 15 * 获取城市名称 16 * @param string $ip

获取天气信息

//获取天气 function getweather($city){ //传入需要查询的城市 $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, "http://wthrcdn.etouch.cn/weather_mini?city=$city"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch,CURLOPT_ENCODING ,