kobinath Ответов: 2

Система прогноза погоды с использованием C#


я хочу создать простую систему прогнозирования погоды с использованием c#. мне нужно отображать только состояние облаков, температуру, влажность, ветер только для отображения на предстоящую неделю в течение 7 дней. пожалуйста, помогите мне сделать эту систему. окончательный 7-дневный результат должен быть отображен в виде таблицы данных

Что я уже пробовал:

Проверьте новое окно инструментов();
sb. Append("http://api.apixu.com/v1/forecast.xml?key=5[удалено]0& q=");
СБ.Добавить(txtcity.Текст);
sb. Append ("& days={1}");
sb. Append ("{7}");

var request = sb. ToString();

использование (var webClient = new WebClient())
{
var response = webClient.DownloadData (запрос);

ВАР в XML = кодировка.Кодировке utf8.Метода getString(ответ);

using (var sr = new StringReader (xml))
{
var dataSet = новый набор данных();
набора данных.Метод readxml(СР);
dataGridView1. DataSource = dataSet.Таблицы[0];
}
}

2 Ответов

Рейтинг:
2

phil.o

Вы используете заполнитель при построении строки, но можете использовать его неправильно.
Может быть попробовать:

int numberOfDays = 7;
StringBuilder sb = new StringBuilder();
sb.Append("http://api.apixu.com/v1/forecast.xml?key=<redacted>&q=");
sb.Append(txtcity.Text);
sb.AppendFormat("&days={0}", numberOfDays);

В зависимости от используемой версии C# вы также можете попробовать:
sb.Append($"&days={numberOfDays}");

(обратите внимание на $ знак перед строкой во втором варианте).
Вы также можете сгруппировать это в один оператор, устраняя необходимость создавать новый StringBuilder каждый раз, когда вызывается метод:
string key = "<redacted>";
string city = txtcity.Text;
int numberOfDays = 7;
string requestText = $"http://api.apixu.com/v1/forecast.xml?key={key}&q={city}&days={numberOfDays}";

Наконец, кажется, есть специфичный для C# API, который вы могли бы попробовать использовать:
apixu/apixu-используется CSharp
[^]
Надеюсь, это поможет. Любезно.


kobinath

простая система прогнозирования погоды с использованием c#. мне нужно отображать только состояние облаков, температуру,влажность, ветер только для отображения на предстоящую неделю в течение 7 дней. пожалуйста, напишите код для меня. выше код не работает, пожалуйста, codeproject.

phil.o

Извините, CodeProject-это не служба заказа кода. Я в порядке, чтобы помочь, когда есть некоторые трудности, но я никогда не буду делать вашу работу за вас.
Поскольку у вас, похоже, есть действительная подписка на эту услугу, я предлагаю вам обратиться за поддержкой к ним. Лично я никогда не пользовался услугами apixu и не планирую этого делать, по крайней мере в ближайшем будущем.

kobinath

строка URI = строка.Format("http://api.apixu.com/v1/forecast.xml?key=5742bec32f4141e08db171907171010&q={0}&days=7", город);
XDocument doc = XDocument.Загрузка (uri);
foreach (var npc in doc.Потомки ("прогнозный день"))
{
Ящик для сообщений.Show((string)npc.Descendants("дата").Метода firstordefault());
Ящик для сообщений.Шоу("максимальная температура" + (строка)НПЦ.Потомки("maxtemp_c").Метода firstordefault());
Ящик для сообщений.Шоу("Минимальная температура" + (строка)НПЦ.Потомки("mintemp_c").Метода firstordefault());
Ящик для сообщений.Шоу("текст" + (строка)НПЦ.Потомки("текст").Метода firstordefault());
Ящик для сообщений.Show ("Icon" + (string)npc. Descendants ("http" + " icon").Метода firstordefault());

}
сейчас успешно работает. вместо окна сообщения как можно поместить все данные в сетку данных

Рейтинг:
0

Ravi Bhavnani

Я вижу по крайней мере 3 вещи неправильно:

  • Вы раскрыли свой закрытый ключ APIXU миру, включив его в свой пост.
  • 2-й .Append() звонок должен быть .Append("&days=7").
  • Тебе не нужен последний .Append() вызов.
/ Рави


kobinath

он будет переигрываться только один день я хочу отобразить 7 дней предстоящей недели информации в сетке можете ли вы написать код

Ravi Bhavnani

URL-адрес http://api.apixu.com/v1/forecast.xml?key=[KEY]& q=Paris& days=7 возвращает мне 7 дней.

/ Рави