概述

  本文使用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[];
try
{
str = weather.getWeather("北京", "");
MessageBox.Show(str[] + "\n" + str[] + "\n" + str[] + "\n" + str[] + "\n" + str[], "天气信息");
}
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[];
try
{
str = weather.getWeather("北京", "");
MessageBox.Show(str[] + "\n" + str[] + "\n" + str[] + "\n" + str[] + "\n" + str[], "天气信息");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

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

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

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

  

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

  

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

  1. Kettle通过Webservice获取天气信息

      Kettle通过Webservice获取天气信息 需求: 通过kettle工具,通过webservice获取天气信息,写成xml格式文件. 思路: Kettle可通过两种选择获取webservic ...

  2. webservice获取天气信息

    效果 1.eclipse中新建一个Java项目 2.通过命名获取天气的客户端信息 首先,打开天气网站http://ws.webxml.com.cn/WebServices/WeatherWS.asmx ...

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

    通过SOAP请求的方式获取天气信息并解析返回的XML文件. 参考: http://www.webxml.com.cn/WebServices/WeatherWS.asmx import java.io ...

  4. 内网公告牌获取天气信息解决方案(C# WebForm)

    需求:内网公告牌能够正确显示未来三天的天气信息 本文关键字:C#/WebForm/Web定时任务/Ajax跨域 规划: 1.天定时读取百度接口获取天气信息并存储至Txt文档: 2.示牌开启时请求Web ...

  5. ajax无刷新获取天气信息

    浏览器由于安全方面的问题,禁止ajax跨域请求其他网站的数据,但是可以再本地的服务器上获取其他服务器的信息,在通过ajax请求本地服务来实现: <?php header("conten ...

  6. Android实现自动定位城市并获取天气信息

    定位实现代码: <span style="font-size:14px;">import java.io.IOException; import java.util.L ...

  7. 半吊子学习Swift--天气预报程序-获取天气信息

    昨天申请的彩云天气Api开发者今天上午已审核通过  饭后运动过后就马不停蹄的来测试接口,接口是采用经纬度的方式来获取天气信息,接口地址如下 https://api.caiyunapp.com/v2/ ...

  8. java获取天气信息

    通过天气信息接口获取天气信息,首先要给项目导入程序所需要的包,具体需要如下几个包: json-lib-2.4.jar ezmorph-1.0.6.jar commons-beanutils-1.8.3 ...

  9. 在C#中调用API获取网络信息和流量

    原文 在C#中调用API获取网络信息和流量 最近一项目中要求显示网络流量,而且必须使用C#. 事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量. ...

随机推荐

  1. H5全屏滚动专题页最佳实践

    1.slip.js + rem.js 主要插件: slip.js github: https://github.com/binnng/slip.js rem.js 插件为阿里淘宝的 rem 实现的基础 ...

  2. python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)

    在python3 中安装其它模块时经常出现 failed with error code 1等状况,使的安装无法进行.而解决这个问题又非常麻烦. 接下来以mlpy为例,介绍一种解决此类安装问题的办法. ...

  3. 数据库FMDB-sql

    1.首先要先导入第三方类库FMdatabase. 2.获得存放数据库文件的沙盒地址. #pragma mark - 创建数据库 - (void)createAndInitDatabase { NSSt ...

  4. sql 递归子查询

    select (SELECT (Case A1.AreaAbbr WHEN '' THEN A1.AreaName Else A1.AreaAbbr  END)+ ' ' FROM AreaLang ...

  5. 登陆+注册(三层+sql语句)

    啰嗦:今天面试,遇到这个上级测试,很容易的,因为一个错误,居然最后没做出来,心累 回到家,1小时做完,我特么还加了密,我还验证,可是上天不给我一次重来的机会啊 很垃圾的,小白可以看看,大神可以轻喷 首 ...

  6. iOS图片加载到内存中占用内存情况

    我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              10 ...

  7. node代码片段

    /** * Created by Administrator on 2016/8/22 0022. * chat */ var net=require('net'); var chatServer=n ...

  8. mysql使用小技巧

    1.mySql 删除表中大批量的数据 假设有一个表(logs)有2000万条记录,我们要在业 务不停止的情况下删除其中status=1的所有记录,差不多有1800万条,直接执行 DELETE FROM ...

  9. 如何正确建立MYSQL数据库索引

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...

  10. Mac下安装 PIL

     最近入手MacBook Pro 在配置PIL环境的时候遇到一些问题.现在把解决方式记录下来,希望对有需要的有所帮助. 1. 安装brew : brew 又叫Homebrew,是Mac OSX上的软件 ...