Laden...

C# Globalweather WebserviceX.net

Erstellt von Struppi95 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.300 Views
S
Struppi95 Themenstarter:in
4 Beiträge seit 2013
vor 10 Jahren
C# Globalweather WebserviceX.net

Hallo,

ich habe gerade eine Klassenarbeit über ein Programm geschrieben, dass per TCP eine Verbindung zu WebserviceX.NET :: XML Web Services solution provider aufbaut und dann dort per HTTP GET Wetter Daten abfragt.

Es geht um folgendes ich baue per TCPCLient eine Verbindung mit dem PORT 80 auf. Dies klappt soweit, dann schicke ich per StreamWriter zwei Befehle, die ich von folgender Seite habe: default


GET /globalweather.asmx/GetWeather?CityName=string&CountryName=string HTTP/1.1
Host: www.webservicex.net

// Den String habe ich natürlich durch meine Angaben ersetzt 😃

Diese zwei Nachrichten und danach eine Leerzeile ( Laut Aufgabe ) leite ich per StreamWriter an den Server, danach warte ich per StreamReader auf eine Antwort und speichere diese in einer Variablen. Diese Variable möchte ich dann in eine Textdatei schreiben. Leider ist diese Antwort immer leer.

Weiß Jemand vielleicht woran das liegen könnte?

So sieht meine Empfangen Methode aus:

private void empfangen() {

            string pfad = "F:/Antwort.txt";
            FileInfo info = new FileInfo(pfad);
            bool isEmpty = info.Length == 0;
                try
                {
                    antwort = sr.ReadLine();
                }

                catch
                {

                    throw new Exception("Keine Antwort:/!");

                }

                c_textdatei.WriteFile(@pfad, antwort);
                break;
            }
            if (File.Exists(pfad))
            {
                if (!isEmpty)
                {

                    MessageBox.Show("Erfolgreich!");
                }
                else {


                    MessageBox.Show("Die Datei existiert ist aber Leer!");
                
                }
            else {

                MessageBox.Show("Die Datei existiert nicht!");
            
            }    
        }

MfG und Vielen Dank

16.842 Beiträge seit 2008
vor 10 Jahren

Wieso TCP und nicht direkt SOAP?
Weißt Du nicht was SOAP ist oder wieso der (aus aktueller Sicht sinnelose) Umweg?

Und mit diesem Code, der alles andre als sauber durchdacht scheint, kann Dir ohnehin niemand helfen. Die relevanten Codestellen zeigst Du gar nicht.

S
Struppi95 Themenstarter:in
4 Beiträge seit 2013
vor 10 Jahren

Wie bereits gesagt, war dies Teil der Aufgabe in meiner Klassenarbeit, da wir bisdahin nur mit TCP gearbeitet haben.

 private void button1_Click(object sender, EventArgs e)
        {
           client = new TcpClient();
           button1.Enabled = false;
            
            try
            {
                client.Connect("www.webservicex.net", 80);
            }
            catch (IOException) {

                throw new Exception("Verbindung fehlgeschlagen");
            
            }
            listBox1.Items.Add("Verbindung steht");


            sr = new StreamReader(client.GetStream());
            sw = new StreamWriter(client.GetStream());
           

            senden();
            empfangen();
            
        }

   private void senden() {

                sw.WriteLine("GET globalweather.asmx/GetWeather?CityName=Frankfurt&CountryName=Ger HTTP/1.1");
                sw.WriteLine("Host: www.webservicex.net");
                sw.WriteLine(""); 
        }
I
36 Beiträge seit 2013
vor 10 Jahren

Das hier wird ziemlich sicher das tun, was Du benötigst:


private static string Get(string city, string country)
        {
            using (TcpClient client = new TcpClient("www.webservicex.net", 80))
            {
                using (StreamReader sr = new StreamReader(client.GetStream()))
                {
                    using (StreamWriter sw = new StreamWriter(client.GetStream()))
                    {
                        sw.WriteLine(string.Format("GET /globalweather.asmx/GetWeather?CityName={0}&CountryName={1} HTTP/1.1", city, country));
                        sw.WriteLine("Host: www.webservicex.net");
                        sw.WriteLine("Connection: close");
                        sw.WriteLine();
                        sw.Flush();
                        return sr.ReadToEnd();
                    };
                };
            };
        }

Den Rest spare ich mir aus Höflichkeit.

++++ Tag ein, Tag aus: HTML-Programmierer beklagt monotone Arbeit ++++
++++ Ein Witz auf seine Kosten: Masochist kann nur gequält lächeln ++++
++++ Nichts dran: Model leugnet Magersucht ++++