C# winform生成天气预报(转)
原文地址
http://www.cnblogs.com/ChowYy/p/3382216.html?utm_source=tuicool&utm_medium=referral
项目需要,然后在网上查找相关的资料,总结一下
文章上查询天气API关键是要知道城市的ID,但是根据文章提供的方法,或者说现在天气气象局把获取城市这个API给取消了,所以,无法获取城市ID,好在文章提供了获取城市ID的xml文件,我下载了下来,然后添加到我的附件上了
http://files.cnblogs.com/files/ningheshutong/天气编码.xml
然后根据这个编码,我们获取相应的城市ID,然后根据下面URL来获取对应的天气信息
1、实时天气接口
地址:http://www.weather.com.cn/data/ sk/【城市代码】.html
例如:查询北京实时天气
结果:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"18","WD":"东南风","WS":"1级","SD":"17%","WSE":"1","time":"17:05","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"暂无实况","qy":"1011","rain":"0"}}
2、今日天气接口
地址:http://www.weather.com.cn/data/cityinfo/【城市代码】.html
例如:查询北京今日天气
结果:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"-2℃","temp2":"16℃","weather":"晴","img1":"n0.gif","img2":"d0.gif","ptime":"18:00"}}
3、今日及未来天气接口【内容最详细】【目前是拒绝访问】
地址:http://m.weather.com.cn/data/【城市代码】.html
例如:查询北京今日及未来天气
结果:
拒绝访问目前
接下来,就是用方法调用这个借口并返回数据了,用下面的方法
public static String SendRequestByGetMethod(String url, Encoding encoding)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), encoding);
string str = sr.ReadToEnd();
sr.Close();
return str;
}
读取天气预报
然后对获取的天气进行解析即可
还有一点,我登录http://openweather.weather.com.cn/Home看了,貌似要需要收费了,但是目前是免费,如果以后收费了,估计这个也不能用了,到时候再看看有没有其他免费的API或者下面的额webservice来调用
还在网上查找了调用webservice来解决这个问题,稍后会对齐进行总结
下面是采用websevice来实现的,我参考了http://zhangkui.blog.51cto.com/1796259/497324 的博客,但是按照他的方法,我出现了
“
服务器无法处理请求。 ---> 未将对象引用设置到对象的实例
”
这样的问题,然后在网上开始查找,有说是服务器那边出问题了,有的说是添加引用有问题,然后有一个回答感觉靠谱:
默认添加服务引用是通过WCF的方式添加的,这种方式可能会存在问题,添加Web服务的话是按照wsdl协议的
你调用的是一个WebService当然最好是使用Web引用的方式了。毕竟WCF是后来出的,说是兼容WebService,但是总归没有原生态的好。
所以来说,在添加引用的时候,记住,选择高级选项里面的web引用,因为这个是原生态的。
今天又学习了这一点
对了,以防以后把这种方法忘记了,那就把,文章复制粘贴下来
本文使用Winform (C#)调用互联网上公开的WebServices(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)来实现天气预报,该天气预报 Web 服务,数据来源于中国气象局 http://www.cma.gov.cn/ ,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。
程序效果:

实现步骤:
1、引入Web服务。在VS中项目上右击→添加服务引用。

2、在弹出的添加服务引用窗口,录入web服务地址和引用后的命名空间。

3、布置winform窗体界面,实现代码。核心代码如下:
- private void button1_Click_1(object sender, EventArgs e)
- {
- Weather.WeatherWebServiceSoapClient w = new Weather.WeatherWebServiceSoapClient("WeatherWebServiceSoap");
- //把webservice当做一个类来操作
- string[] s = new string[23];//声明string数组存放返回结果
- string city = this.textBox1.Text.Trim();//获得文本框录入的查询城市
- s = w.getWeatherbyCityName(city);
- //以文本框内容为变量实现方法getWeatherbyCityName
- if (s[8] == "")
- {
- MessageBox.Show("暂时不支持您查询的城市");
- }
- else
- {
- pictureBox1.Image = Image.FromFile(@"d:\image\" + s[8] + "");
- this.label4.Text =s[1]+" "+s[6];
- textBox2.Text = s[10];
- }
- }
4、天气图标可至【http://www.webxml.com.cn/images/weather.zip】下载。
5、Web服务的各方法参数直接访问【http://www.webxml.com.cn/WebServices/WeatherWebService.asmx】查询,从而实现其它丰富功能,如未来天气预报等。
C# winform生成天气预报(转)的更多相关文章
- C# PDF、winform 生成解析二维码
PDF 生成.解析二维码 界面样式: 第一步:下载ThoughtWorks.QRCode.dll 类并引用 地址 http://download.csdn.net/detail/liwb1987/8 ...
- Winform 生成不需要安装的exe可执行文件 ILMerge使用
今天应领导要求,把一个程序打包生成一个可以执行的exe文件,不是安装包那种,类似于绿色文件,就是一个exe,可以直接运行.上网查了一下有一个工具可以实现ILMerge. 参照两个文档http://bl ...
- winform生成条形码和二维码(ZXing.Net)
首先在项目添加ZXing.Net. 工具-->Nuget包管理器-->Nuget程序包 在所搜栏输入 ZXing.Net 如下图: 添加完成后会看见: 效果图: 所有代码: /// &l ...
- Winform生成安装程序时配置自启动
1.右击安装编辑程序,在“视图”菜单中,选择“注册表”. 2.创建“键”:HKCU\Software\Microsoft\Windows\CurrentVersion\Run 3.右键Run,新建“字 ...
- winform连接oracle时Oracle.DataAccess.dll版本问题
1.通用TestOracle.zip部署到iis上,或直接运行程序测试当前全局程序集 protected void Button1_Click(object sender, EventArgs e) ...
- winform连接oracle时Oracle.DataAccess.dll版本问题 Silverlight
1.通用TestOracle.zip部署到iis上,或直接运行程序测试当前全局程序集 protected void Button1_Click(object sender, EventArgs e) ...
- 将exe依赖运行的dll,合并入exe中,整个程序仅存在一个exe文件
方法一: 使用ILMerge合并winform生成的exe和引用的dll文件 参考:https://blog.csdn.net/u010108836/article/details/76782375 ...
- C# Sftp操作
SFTP释义-----引自百度百科 sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的网络的加密方法.sftp 与 ftp 有着 ...
- 干!垃圾微软!发布我的Netcore跨平台UI框架 CPF
什么鬼,我的CPF快写好了,你居然也要搞跨平台UI框架?什么Maui? 之前怎么不早说要搞跨平台UI框架呢?看到谷歌搞flutter眼红了?明年年底发布?又搞这种追别人屁股的烂事情. 什么MVU模式? ...
随机推荐
- 浅谈Java五大设计原则之观察者模式
定义一下观察者模式: 观察者模式又叫 发布-订阅 模式,定义的两个对象之间是一种一对多的强依赖关系,当一个对象的状态发生改变,所有依赖它的对象 将得到通知并自动更新(摘自Hand First). ...
- android [因为开了刷机精灵等软件 导致adb 无法使用]error: could not install *smartsocket* listener: cannot bind
今天 使用 刷机精灵后 在使用android studio 时发现 adb 无法正常使用. 于是 想重启 adb.exe , 直接在DOS里杀掉adb输入:adb kill-server 再启动输 ...
- KVC与KVO的实现原理
|KVC的用法 1.KVC既键值编码(Key Value Coding),基于NSKeyValueCoding协议,它是以字符串的形式来操作对象的成员变量,也就是通过字符串key来指定要操作的成员变量 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- “vmware tools 只能虚拟机中安装”的解决方法
vmware安装的一个大坑,最近在开发上需要用到centos 6.4,由于我本身的系统是win8所以决定使用虚拟机,选择了vmware,并且从网上下载的虚拟机的映像文件.中间安装了vmware8,安装 ...
- Google Nexus5在linux下刷原生安卓 android6.0
之前将Nexus5刷成了MIUI系统,现在想体验一下安卓6.0,网上都是windows的教程,但如何在linux下刷机呢? 首先准备环境和工具: 1. 我的linux系统是lubuntu 15.10 ...
- Sublime更换默认字体的方法
Sublime是一款很不错的编辑器,不过默认安装后的字体却不尽人意,并且Sublime竟然连个完整的设置页面都没有(直接让你编辑配置文件).于是很多人对这字体就忍气吞声了.其实只要添加一行代码就可以完 ...
- linux pstack命令总结
pstack命令用来显示进程的栈跟踪. pstack 命令必须由相应进程的属主或root账号运行.可以使用pstack来确定进程挂起的位置.此命令只有一个参数,那就是pid,具体关于pstack的介绍 ...
- SQL Server(三)——增、删、改、查
一.数据库操作 create database 数据库名称 ——创建drop database 数据库名称 ——删除use 数据库名称 ——使用go 两条SQL语句之间分隔 二.表的操作 create ...
- CKEditor与CKFinder的配置(ASP.NET环境)
CKEditor是一个专门使用在网页上的所得文字编辑器,适用于PHP.ASP.NET.Java等后端开发语言.CKEditor原名为FCKeditor,“FCK” 是这个编辑器的作者的名字Freder ...