Xamarin Forms: Получение погоды с C# (Урок 7)

Добавление обработчика события к кнопке

Для добавления обработчика события к кнопке, необходимо прописать атрибут Click. IDE предложит создать новый обработчик. Двойной клик по подсказке или нажатие Enter создаст метод, срабатывающий при нажатии кнопки. Этот метод автоматически генерируется.

Получение и проверка пользовательского ввода

Создадим переменную City для хранения пользовательского ввода:

string City = UserInput.Text.Trim();

Функция Trim() удаляет лишние пробелы. Проверим длину строки: если она меньше двух символов, выведем всплывающее окно с ошибкой:

if (City.Length < 2)
{
    await DisplayAlert("Ошибка", "Введите корректное название города", "Okey  ");
    return; // Выход из метода
}

Метод должен быть асинхронным (async) для корректной работы с await DisplayAlert.

Получение информации о погоде с помощью OpenWeatherMap API

Для получения информации о погоде используется сторонний сервис OpenWeatherMap (openweathermap.org). Необходимо зарегистрироваться на сайте (регистрация бесплатна) и получить API ключ. Ключ хранится в константе:

const string API_KEY = "YOUR_API_KEY"; // Замените на свой ключ!

Информация о погоде получается через отправку запроса по URL адресу, например:

https://api.openweathermap.org/data/2.5/weather?q=Seattle&appid=YOUR_API_KEY&units=metric

Где:

  • q — название города.
  • appid — API ключ.
  • units=metric — использование метрической системы (градусы Цельсия).

Отправка HTTP запроса и обработка ответа

Для отправки HTTP запроса используется класс HttpClient:

using System.Net.Http;

// ...

HttpClient client = new HttpClient();
string url = $"https://api.openweathermap.org/data/2.5/weather?q={City}&appid={API_KEY}&units=metric";
string response = await client.GetStringAsync(url);

resultLabel.Text = response; // Вывод ответа в Label

Работа с JSON объектом с помощью Newtonsoft.Json

Для работы с JSON объектом используется библиотека Newtonsoft.Json. Установите пакет Newtonsoft.Json через NuGet Package Manager. Подключите библиотеку:

using Newtonsoft.Json.Linq;

Парсинг JSON и получение температуры:

JObject json = JObject.Parse(response);
string temp = json["main"]["temp"].ToString();

resultLabel.Text = $"Погода сейчас: {temp}";

Что будем искать? Например,программа