第一步,新建控制台应用程序,然后新建类:WeatherReport:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class WeatherReport
{
public string date { get; set; } public long temp { get; set; } public string text { get; set; } }
}

第二步,要获取需要的城市的woeid(where on earch id),比如北京是:

https://www.metaweather.com/api/location/search/?query=beijing

第三步编写Program类:

woeid在Program类中用的到,URL地址(可复制到浏览器中查看格式内容):

https://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20woeid%20in%20(2151330%20)&format=json

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20woeid%20in%20(2151330%20)&format=json");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); GetWeather(client).Wait();
} static async Task GetWeather(HttpClient cons)
{
using (cons)
{
HttpResponseMessage res = await cons.GetAsync(""); res.EnsureSuccessStatusCode();
if (res.IsSuccessStatusCode)
{
string weather = await res.Content.ReadAsStringAsync(); JObject jobj = JObject.Parse(weather);
JToken jToken = jobj.First;
string WeatherState = jToken.First["results"]["channel"]["item"]["condition"].ToString();
WeatherReport report = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherReport>(WeatherState);
Console.WriteLine("\n"); Console.WriteLine("Weather Station: Beijing");
Console.WriteLine("Temperature Details");
Console.WriteLine("-----------------------------------------------------------");
Console.WriteLine("Temperature (in deg. C): " + (report.temp - 32) * 0.55);// Converted from Fahrenheit to Celsius
Console.WriteLine("Weather State: " + report.text);
Console.WriteLine("Applicable Time: " + report.date);
Console.ReadLine();
}
}
}
}
}

运行结果:

控制台调用天气API例子的更多相关文章

  1. 调用天气Api实现天气查询

    上面是简单截图: 前台代码: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&qu ...

  2. jsonp 调用天气API

    由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...

  3. Json 调用 天气API 实例

    百度了一下,找了点别人的方法改进了一下. 获取天气网址:http://www.weather.com.cn/html/weather/101210701.shtml这里是温州的,当然其他城市自己搜索一 ...

  4. 闲着无聊时写的一个调用天气 API 的小 Demo

    分为两个部分--调用以及实现,并且由于不想折腾,直接使用了 Console 来调用. 通过firefox直接调用 Main 入口,调用以及输出 调用部分没什么好说的,主要是针对 dynamic 类型的 ...

  5. 天气api接口

    python调用天气api接口: http://www.sojson.com/open/api/weather/json.shtml?city=北京 http://www.sojson.com/blo ...

  6. JAVA的免费天气api接口调用示例

    step1:选择本文所示例的接口"免费天气api" url:https://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参 ...

  7. 雅虎天气API调用

    雅虎天气API调用: 1.调用方法:http://weather.yahooapis.com/forecastrss?w=2502265&u=c,绿色字体为城市代号,u=c表示取摄氏度. 2. ...

  8. ajax调用免费的天气API

    最近在做项目中要用到调用天气接口,在网上找了很多资料之后发现https://www.tianqiapi.com/的天气API挺好的,好用而且免费,调用也很简单.在此做个笔记,大家一起学习交流,如有问题 ...

  9. 【ASP.NET Web API教程】3.2 通过.NET客户端调用Web API(C#)

    原文:[ASP.NET Web API教程]3.2 通过.NET客户端调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...

随机推荐

  1. javascript进制转换

    其他进制转十进制 原理 parseInt 或者 Number.parseInt 语法 parseInt(string, radix); string 必需.要被解析的字符串. radix 可选.表示要 ...

  2. html5 storage事件

    HTML5 虽然很多年了,但是真的了解不不够不够.主题说的是 storage时间,说起对 storage 事件的了解还是从 QQ音乐 说起. QQ音乐的主页是 https://y.qq.com , 而 ...

  3. [Spark性能调优] 源码补充 : Spark 2.1.X 中 Unified 和 Static MemoryManager

    本课主题 Static MemoryManager 的源码鉴赏 Unified MemoryManager 的源码鉴赏 引言 从源码的角度了解 Spark 内存管理是怎么设计的,从而知道应该配置那个参 ...

  4. 汇编转移指令jmp原理

    在计算机中存储的都是二进制数,计算机将内存中的某些数当做代码,某些数当做数据.在根本上,将cs,ip寄存器所指向的内存当做代码,指令转移就是修改cs,ip寄存器的指向,汇编中提供了一种修改它们的指令- ...

  5. javascript 执行环境细节分析、原理-12

    前言 前面几篇说了执行环境相关的概念,本篇在次回顾下 执行环境(Execution context,简称EC,也称执行上下文 ) 定义了变量或者函数有权访问的数据,决定了各自行为,每个执行环境都有一个 ...

  6. 【读书笔记】【深入理解ES6】#5-解构:使数据访问更便捷

    ES6为对象和数组都添加了解构功能,将数据解构打散的过程变得更简单,可以从打散后更小的部分中获取所需信息. 对象解构 let node = { type: "Identifier" ...

  7. Babel 转码器 § es6转换es5

    Babel 转码器 § es6转换es5 实时转码 /  Repl  -babel-node / babel-register(自动转码引入babel-register模块) 配置文件.babelrc ...

  8. java.io.FileNotFoundException class path resource [xxx.xml] cannot be opened

    没有找到xxx.xml,首先确定你项目里有这个文件吗,如果没有请添加,或者你已经存在配置文件,只是名字不是xxx.xml,请改正名字.此外还要注意最好把xxx.xml加入到classpath里,就是放 ...

  9. POJ2503-Babelfish-二分

    Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 44545   Accepted: 18803 Descr ...

  10. (a == 1 && a == 2 && a == 3),何时为true?

    今天浏览一些技术网站,看到这个题目.虽然觉着代码这么写的可能性低之又低,但是却也考验对js了解的程度. 在 JavaScript 中 (a ==1 && a== 2 && ...