Добавление обработчика события к кнопке
Для добавления обработчика события к кнопке, необходимо прописать атрибут 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}";