none
Wie kann ich einen Internet-Dienst anbinden? RRS feed

  • Frage

  • Hallo Zusammen.

    Ich suche nach einer Möglichkeit folgenden Dienst ' http://geodaten.service24.rlp.de/cgi-bin/transatkis.cgi ' mit einem C# Programm anzusprechen. Ist dies überhaupt Möglich?

    Viele Grüße

    Stefan Weißenfels

    btw: Ich nutze C# Express Edition 2008 und bin nicht all zu erfahren mit C#. ;-)
    Sonntag, 18. Juli 2010 08:57

Antworten

  • Hallo Stefan,

    nichts ist unmöglich ;-) Und natürlich kannst du diesen Dienst aus deiner Anwendung heraus nutzen. So könnte ein Aufruf des Dienstes Aussehen:

     

        public string sendRequest(string varA, string varB, string url)
        {
          HttpWebRequest request =(HttpWebRequest)WebRequest.Create(url);
    
          //FOrmat ist im Quellentext nicht angegeben, also raten...
          ASCIIEncoding encoding = new ASCIIEncoding();
    
          //Die Werte für den Post habe ich aus dem Quelltext der Seite
          string postData = string.Format("R={0}&H={1}&OP=AUTO",varA, varB);
          byte[] data = encoding.GetBytes(postData);
    
          //Die Methode ist POST
          request.Method = "POST";
          request.ContentType = "application/x-www-form-urlencoded";
          request.ContentLength = data.Length;
    
          //Einen Stream erzeugen, und die Dten damit an den Server senden
          Stream newStream = request.GetRequestStream();
          newStream.Write(data, 0, data.Length);
          newStream.Close();
    
          //NUn die Antwort empfangen
          StreamReader reader = default(StreamReader);
          string result = null;
          HttpWebResponse response = default(HttpWebResponse);
    
          response = (HttpWebResponse)request.GetResponse();
    
          reader = new StreamReader(response.GetResponseStream());
          result = reader.ReadToEnd();
    
          reader.Close();
    
          return result; //Hier wird der Komplette HTML Quelltext ausgegeben den man als Response erhält
        }

     

    Die Verwendung:

        private void Form1_Load(object sender, EventArgs e)
        {
          this.TextBox1.Text = sendRequest("3391032,020", "5468747,666", "http://geodaten.service24.rlp.de/cgi-bin/transatkis.cgi");
        }

    In dieser kleinen Funktion verwende ich nur einen HttpWebRequest & Response und ein wenig Grundwissen über HTTP, dass man haben sollte, wenn man solche Vorhaben umsetzen will.

    Die Namen der Input Felder habe ich dabei aus dem Quelltext der Webseite die du da gepostet hast.

    Als Antwort bekommst den kompletten HTML Quelltext der Antwortseite und musst diesen dann ggf mit Regular Expressions auswerten und die Informationen, die du benötigst auslesen. (Hier wäre das wohl das Ergebnis)

    Folgendes solltest du noch beachten:

    1. Du solltest den Anbieter des Dienstes fragen ob du diesen Dienst aus deinem Programm heraus nutzen darfst, denn das sehen nicht alle gerne (Eventuell gibts sogar eine extra dafür vorgesehene API)
    2. Wenn dein Programm sehr viele Anfragen an diesen Dienst sendet könnte der Anbieter dies als eine DoS Attake deuten.
    Ich hoffe das hilft dir weiter :-)


    MfG, Sebastian Gross
    Sonntag, 18. Juli 2010 19:06