C#实现中国天气网XML接口测试

点击链接查看中国天气网接口说明,最近想研究一下接口测试,源于最近一次和某公司的技术总监(交大校友)谈话,发现接口测试的需求是比较大的,于是想要研究一下。

好不容易在网上找到了一个关于中国天气网的接口说明,就是上面那篇。决定访问下这个接口,对接口返回的内容进行分析,筛选出我想要的信息。

想到当时问及的接口主要是json类型的,但是苦于没有找到json类型的接口(上文中的json接口貌似失效了),就先拿xml类型的接口试验一下,我想原理应该都差不多,只是具体的实现有些不同。

若谁有可用的json接口方便透漏一下,欢迎留言,非常感谢!

以下以从中国天气网接口返回的内容中获取关于北京城市的天气信息举例,代码如下:

using System;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Xml.Linq;

namespace InterfaceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ReportWeather("北京");
        }

        private static void ReportWeather(string cityName)
        {
            string localContent = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\test.txt";
            try
            {
                string url = "http://flash.weather.com.cn/wmaps/xml/china.xml";
                WebClient MyWebClient = new WebClient();
                Byte[] pageData = MyWebClient.DownloadData(url);
                string pageHtml = Encoding.UTF8.GetString(pageData);                //XDocument doc = XDocument.Parse(pageHtml);
                using (StreamWriter sw = new StreamWriter(localContent))
                {
                    sw.WriteLine(pageHtml);
                }
                XDocument doc = XDocument.Parse(pageHtml);
                //XDocument doc = XDocument.Load(localContent);
                var results = from ele in doc.Descendants("city") where ele.Attribute("cityname").Value.Equals(cityName) select ele;
                foreach (var result in results)
                {
                    Console.WriteLine("城市:" + cityName);
                    Console.WriteLine("天气情况:" + result.Attribute("stateDetailed").Value);
                    Console.WriteLine("气温情况(摄氏度):" + result.Attribute("tem1").Value + "到" + result.Attribute("tem2").Value);
                    Console.WriteLine("风力情况:" + result.Attribute("windState").Value);
                }
                Console.ReadLine();
            }
            catch (WebException webEx)
            {
                Console.WriteLine(webEx.Message.ToString());
            }
        }
    }
}

不管是不是为了方便起见,我把接口返回的信息保存到了本地一份(路径为localContent),内容如下:

运行截图如下(多云转霾……记得小时候听天气预报都是多云转晴……唉……):

这样我们就实现了对xml接口返回信息的过滤,对于xml类型接口的测试。

时间: 2024-10-03 13:38:47

C#实现中国天气网XML接口测试的相关文章

C#实现中国天气网JSON接口测试

接上一篇,经过反复的查看,最终从这篇文章中找到了一个可用的JSON接口,于是研究了一下JSON接口的测试,和上一篇XML接口测试的原理是一样的,只是需要安装一下Newtonsoft.Json: 这个就是传说中的JSON.Net!在项目右键点击“管理NuGet程序包”中搜索json.net然后安装即可,等到项目的引用中出现这个东西的时候就可以在程序里using Newtonsoft.Json了. 还是老套路,不管有用没用,先把接口返回的JSON内容保存到本地一份.这里为了查看方便我直接在控制台打印

Android解析中国天气网的Json数据

在Android开发中.一般的APP都是通过获取server端的数据来更新UI.从server获取到的数据能够是Json.它的数据量要比XML要小,这里解析中国天气网上获取的数据,尽管已经不再更新了.但用来学习还是能够的.为了方便我直接到数据通过txt保存到本地,它的数据能够通过这个页面获取:http://m.weather.com.cn/data/101280601.html 文件夹结构 事实上解析也非常easy.关键代码 private void json3() { InputStream

模块一、调用中国天气网和qqOnline及TrainTimeWebService接口来突出Json方法

一. 浏览网页的时候,发送的请求.服务器反回来的永远是字符串,由于服务器后台使用的语言不通,所以就需要用工具反解,这里用到了json json方法一 json.loads()将字符串转化为python的基本数据类型(内部必须是双引号) 中国天气网城市代码网络接口来 代码实现: 1 req = urllib.request.Request("http://www.weather.com.cn/adat/sk/101010300.html") 2 r = urllib.request.ur

中国天气网 JSON接口的城市编码解析及结果

最近在弄一个Android应用,其中一个功能是天气情况展示,准备使用google的天气API服务(http://www.google.com/ig/api?hl=zh-cn&weather=,,,, ),不想这个接口已经在几个月前关闭服务了.于是各种资料,最终决定使用 中国天气网 的服务. 中国天气网提供有两种数据格式的接口: 一. XML接口 http://flash.weather.com.cn/wmaps/xml/china.xml http://flash.weather.com.cn/

中国天气网api

namespace wyl.Weather { /// <summary> /// 天气预报辅助类 /// 接口数据来自于 中国天气网 /// </summary> public class WeatherHelper { private static readonly string appId = ConfigurationManager.AppSettings["appId"].ToString(); private static readonly stri

中国天气网-天气预报接口api

中国天气网地址:http://www.weather.com.cn 请求服务 : 查询实时天气信息 http://www.weather.com.cn/data/sk/101110101.html 在浏览器中输入请求地址,获得西安的天气. 其中101110101是城市的代码,如果要查询其他城市的天气,只需要修改城市的代码即可,在中国天气网中城市代码如下: 101010100=北京101010200=海淀101010300=朝阳101010400=顺义101010500=怀柔101010600=通

中国天气网城市代码

中国天气网城市代码 101010100=北京  101010200=海淀  101010300=朝阳  101010400=顺义  101010500=怀柔  101010600=通州  101010700=昌平  101010800=延庆  101010900=丰台  101011000=石景山  101011100=大兴  101011200=房山  101011300=密云  101011400=门头沟  101011500=平谷  101011600=八达岭  101011700=佛爷顶

天气预报接口api(中国天气网)

中国天气weather.comhttp://m.weather.com.cn/data/101110101.html(六天预报) http://www.weather.com.cn/data/sk/101110101.html(实时天气信息) 其中101110101是城市的代码,获得城市代码进入 http://www.weather.com.cn在搜索框上输入你要需要获得天气的城市,点击查询,即可在地址栏获得相应城市编号,然后替换http://m.weather.com.cn/data/1011

【第29篇】通过HttpClient+Gson解析中国天气网的天气预报信息

http://jilongliang.iteye.com/blog/1932110 package com.test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; im