C# :: Aufgabe #78 :: Lösung #3

3 Lösungen Lösungen öffentlich
#78

Wetterdaten abfragen und anzeigen

Anfänger - C# von pocki - 27.11.2014 um 19:00 Uhr
Schreibe ein Programm, welches Wetterdaten von einem Dienst abruft und einige Werte davon ausgibt.
Das Programm soll durch die Benutzereingabe die Stadt entgegen nehmen und zu dieser die aktuellen Wetterdaten ausgeben.

Vorschlag für einen einfachen und kostenlosen Dienst: openweathermap.org
#3
vote_ok
von KawaiiShox (330 Punkte) - 23.06.2017 um 14:16 Uhr
Durch die Konvertierung der erhaltenen json-Daten in ein "WeatherObject" ist es theoretisch möglich beliebige Daten auszugeben. Ich habe mich hier der Einfachheit halber auf die nötigsten beschränkt.


Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Numerics;
using System.IO;
using System.Net;
using System.Diagnostics;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Microsoft.Office.Interop.Excel;
using System.Drawing;


namespace KonsolenTests
{
    class Program
    { 
        public const string APIKey = "63fc4a1c3c719dcd2c8ab677f6ff0820";

        static void Main(string[] args)
        {

            Console.WriteLine("Geben einen Ort ein (z.B. Berlin)");
            string Ort = Console.ReadLine();
            WeatherObject weather = getWetterByName(Ort);
            Console.WriteLine("Das Wetter in " + Ort + " ist folgendermaßen:");
            Console.WriteLine("Temperatur: " + (weather.main.temp - 273) + " C");
            Console.WriteLine("Luftdruck: " + weather.main.pressure + " hPa");
            Console.WriteLine("Luftfeuchtigkeit: " + weather.main.humidity + " %");
            Console.WriteLine("Maximale Temperatur: " + (weather.main.temp_max - 273) + " C");
            Console.WriteLine("Minimale Temperatur: " + (weather.main.temp_min -273) + " C");
            Console.WriteLine("Beschreibung: " + weather.weather[0].description);
            Console.ReadLine();            
        }
		
		//Api-Aufruf
        public static WeatherObject getWetterByName(string Ort)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("http://api.openweathermap.org/data/2.5/weather?q=");
            sb.Append(Ort +"&APPID=");
            sb.Append(APIKey);
            WebRequest request = WebRequest.Create(sb.ToString());
            request.Credentials = CredentialCache.DefaultCredentials;
            WebResponse response = request.GetResponse();
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            reader.Close();
            response.Close();
            return new JavaScriptSerializer().Deserialize<WeatherObject>(responseFromServer);
        }

    }
	
	
	//Nötige Klassen zum konvertieren der erhaltenen Wetterdaten im json-Format in ein "WeatherObject"-Objekt

    public class Coord
    {
        public double lon { get; set; }
        public double lat { get; set; }
    }

    public class Weather
    {
        public int id { get; set; }
        public string main { get; set; }
        public string description { get; set; }
        public string icon { get; set; }
    }

    public class Main
    {
        public double temp { get; set; }
        public int pressure { get; set; }
        public int humidity { get; set; }
        public double temp_min { get; set; }
        public double temp_max { get; set; }
    }

    public class Wind
    {
        public double speed { get; set; }
        public int deg { get; set; }
    }

    public class Clouds
    {
        public int all { get; set; }
    }

    public class Sys
    {
        public int type { get; set; }
        public int id { get; set; }
        public double message { get; set; }
        public string country { get; set; }
        public int sunrise { get; set; }
        public int sunset { get; set; }
    }

    public class WeatherObject
    {
        public Coord coord { get; set; }
        public List<Weather> weather { get; set; }
        public string @base { get; set; }
        public Main main { get; set; }
        public int visibility { get; set; }
        public Wind wind { get; set; }
        public Clouds clouds { get; set; }
        public int dt { get; set; }
        public Sys sys { get; set; }
        public int id { get; set; }
        public string name { get; set; }
        public int cod { get; set; }
    }

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1961048

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.