当前位置: 首页 > news >正文

C#中通过get请求获取api.open-meteo.com网站的天气数据

继C++中使用cpp-httplib和nlohmann_json库实现http请求获取天气数据和Nodejs通过get请求获取api.open-meteo.com网站的天气数据、使用Java通过get请求获取api.open-meteo.com网站的天气数据、Python中通过get请求获取api.open-meteo.com网站的天气数据,我们再使用C#语言实现对应功能。
以下是使用 C# 发送 HTTP GET 请求以获取 api.open-meteo.com 网站天气数据的示例代码:


示例代码

using System;
using System.Net.Http;
using System.Threading.Tasks;class Program
{static async Task Main(string[] args){// API URLstring url = "http://api.open-meteo.com/v1/forecast";string latitude = "37.8136";  // 纬度string longitude = "144.9631";  // 经度// 构造查询参数string query = $"?latitude={latitude}&longitude={longitude}&current_weather=true";try{// 使用 HttpClient 发送 GET 请求using (HttpClient client = new HttpClient()){HttpResponseMessage response = await client.GetAsync(url + query);// 检查响应状态码if (response.IsSuccessStatusCode){// 读取响应内容string responseData = await response.Content.ReadAsStringAsync();Console.WriteLine("Weather Data:");Console.WriteLine(responseData);}else{Console.WriteLine($"Failed to retrieve data. Status code: {response.StatusCode}");}}}catch (Exception ex){Console.WriteLine($"An error occurred: {ex.Message}");}}
}

说明

  1. HttpClient:

    • 使用 HttpClient 类发送 HTTP GET 请求。
    • GetAsync 方法用于异步发送 GET 请求。
  2. API URL 和查询参数:

    • 基础 URL 为 http://api.open-meteo.com/v1/forecast
    • 查询参数包括:
      • latitude:纬度。
      • longitude:经度。
      • current_weather=true:请求当前天气数据。
  3. 响应处理:

    • 使用 response.IsSuccessStatusCode 检查响应是否成功。
    • 使用 response.Content.ReadAsStringAsync() 异步读取响应内容。
  4. 异常处理:

    • 捕获网络错误或其他异常,并打印错误信息。

运行代码

  1. 创建项目
    在终端中运行以下命令创建一个新的 C# 控制台项目:

    dotnet new console -n GetWeatherData
    cd GetWeatherData
    
  2. 替换代码
    将上述代码粘贴到 Program.cs 文件中。

  3. 运行程序
    在终端中运行以下命令:

    dotnet run
    

示例输出

Weather Data:
{"latitude": 37.8136,"longitude": 144.9631,"generationtime_ms": 0.123,"utc_offset_seconds": 0,"timezone": "GMT","current_weather": {"temperature": 20.5,"windspeed": 5.2,"winddirection": 180}
}

注意事项

  1. 确保你的网络可以访问 http://api.open-meteo.com
  2. 如果需要解析 JSON 响应,可以使用 System.Text.JsonNewtonsoft.Json 库。例如:
    var weatherData = JsonSerializer.Deserialize<WeatherResponse>(responseData);
    Console.WriteLine($"Temperature: {weatherData.CurrentWeather.Temperature}");
    
  3. 如果需要更复杂的功能(如 POST 请求或认证),可以扩展代码。
http://www.dtcms.com/a/558023.html

相关文章:

  • 策划方案免费网站中国建设银行官网版本
  • wordpress如何添加关键词和描述杭州百度快照优化公司
  • 网站模板修改工具有赞商城官网
  • LLMs之RAG:Morphik的简介、安装和使用方法、案例应用之详细攻略
  • 商城建设网站策划苏州网站排名优化
  • 阿里云网站建设视频科普网站建设的支持力度
  • 安徽省住房城乡建设厅网站官网自己做网站视频教程
  • 从10小时到1小时!开源网页工具Protologger让细菌命名自动化
  • deepseek api 灵活使用
  • 网站改版十气象网站建设的自查报告
  • 网站开发所需硬件知识库wordpress插件
  • 【计算机网络】408考研核心考点:物理层设备(中继器/集线器)深入解析
  • 做订单管理网站用什么软件南通通州住房和城乡建设网站
  • 3.2.1.常见Web开发框架
  • (108页PPT)某国字头某著某省市场化与数字化转型(附下载方式)
  • 大浪网站建设网站克隆 有后台登录
  • 企业网站主页设计模板wordpress 模板兔
  • 在Linux系统中,top命令的显示参数详解
  • 科技公司企业网站源码米拓建站怎么样
  • 全网网站建设优化创建一个企业网站流程的步骤
  • 05-抓包工具:Reqable配置及基础 使用
  • 网站开发问题解决公司产品展厅设计
  • 上海建设网站公司免费一键生成转账截图
  • Kali Linux 入门指南:从安装到基础使用
  • ProtoBuf安装【Windows/Linux】
  • 如何找网站开发人员花都个性设计商城网站建设
  • asyncio.run() vs asyncio.gather():启动器与聚合器, 为何Jupyter notebook里能直接使用await?
  • C++11——Lambda表达式的用法
  • 织梦做的相亲网站中学生制作的网站
  • Python中通过get请求获取api.open-meteo.com网站的天气数据