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 网站天气数据的示例代码:


示例代码

csharp 复制代码
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // API URL
        string 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# 控制台项目:

    bash 复制代码
    dotnet new console -n GetWeatherData
    cd GetWeatherData
  2. 替换代码

    将上述代码粘贴到 Program.cs 文件中。

  3. 运行程序

    在终端中运行以下命令:

    bash 复制代码
    dotnet run

示例输出

plaintext 复制代码
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 库。例如:

    csharp 复制代码
    var weatherData = JsonSerializer.Deserialize<WeatherResponse>(responseData);
    Console.WriteLine($"Temperature: {weatherData.CurrentWeather.Temperature}");
  3. 如果需要更复杂的功能(如 POST 请求或认证),可以扩展代码。

相关推荐
o***Z44824 分钟前
JavaScript在Node.js中的内存管理
开发语言·javascript·node.js
毕设源码-邱学长37 分钟前
【开题答辩全过程】以 基于Java企业人事工资管理系统为例,包含答辩的问题和答案
java·开发语言
周杰伦fans41 分钟前
C# 正则表达式完全指南
mysql·正则表达式·c#
颜*鸣&空1 小时前
QT程序实现串口通信案例
开发语言·qt
Mu.3871 小时前
计算机网络模型
网络·网络协议·计算机网络·安全·http·https
无限进步_2 小时前
C语言动态内存的二维抽象:用malloc实现灵活的多维数组
c语言·开发语言·数据结构·git·算法·github·visual studio
我有一棵树2 小时前
file 协议与 http 协议的区别:为什么本地 HTML 无法加载相对路径 JS,以及正确的解决方式
javascript·http·html
froginwe112 小时前
Maven 仓库概述
开发语言
二川bro3 小时前
Python在AI领域应用全景:2025趋势与案例
开发语言·人工智能·python