Html Textbox füllen, Button drücken etc.?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Html Textbox füllen, Button drücken etc.?

      Moin,

      nehmen wir mal die Seite codepad.org. Wie kann ich dort einen Text in die Textbox einfügen, auf den Button klicken und nach dem hochladen des Textes den Link herausfinden? HttpRequest oder was brauch ich da? Und wie genau funktioniert das dann ?

      MfG

      Brando
      Zuerst solltest du dir anschauen wie die Seite aufgebaut ist.
      Du musst wissen, mit welcher Methode die Daten übertragen werden (POST oder GET).
      Und du solltest wissen, wie die Input Boxen und der Submit Button heißt.

      Dafür empfehle ich das Analyse Tool LiveHttpHeaders, ein Firefox Addon, welches ich schon seit Jahren nutze.
      Anhand deines Beispiels für codepad.org habe ich das mal gemacht.


      Die Ausgabe:


      Die "Analyse":


      Quellcode

      1. lang=C&code=asdf&private=True&submit=Submit


      Wir können hier sehen das die Daten via POST übertragen werden.
      Und wir sehen natürlich noch mehr:

      • lang=C --> Das "C" steht für die Ausgewählte Syntax
      • code=asdf --> Das "asdf" ist der Inhalt unserer "Code" Box
      • private=true --> Die Option für "privat" wurde angeklickt. (true)
      • submit=Submit --> Unser Button "submit" wurde geklickt
      Das können wir zusammenbauen:

      Quellcode

      1. string query = "lang=C&code=asdf&private=True&submit=Submit";
      2. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.codepad.org");
      3. req.Method = "POST";
      4. req.ContentType = "application/x-www-form-urlencoded";
      5. ASCIIEncoding encoding = new ASCIIEncoding();
      6. byte[] queryBytes = encoding.GetBytes(query);
      7. req.ContentLength = queryBytes.Length;
      8. Stream stream = req.GetRequestStream();
      9. stream.Write(queryBytes, 0, queryBytes.Length);
      10. stream.Close();
      Alles anzeigen

      Den Response kannst du jetzt noch abfangen, aber da du ja schon weißt wie du den Quelltext von HTML Seiten lesen kannst, solltest du das können.
      dmix
      And the reign will kill us all
      We throw ourselves against the wall
      But no one else can see
      The preservation of the martyr in me


      Slipknot - Psychosocial
      Danke dmix.

      Durch das Ausführen von deinem Code, sollte doch jetzt eigentlich ein Paste hochgeladen werden?
      Ich habe Private auf false gestellt und ein paar hochgeladen aber unter "Recent Pastes" kommt nie etwas. Postet man manuel was, sieht man es sofort.
      Der Response sieht doch so aus oder nicht?

      Quellcode

      1. HttpWebResponse httpWebesponse = (HttpWebResponse)req.GetResponse();
      2. //Translate data from the Web-Response to a string
      3. dataStream = httpWebesponse.GetResponseStream();
      4. StreamReader streamreader = new StreamReader(dataStream, Encoding.UTF8);
      5. string response = streamreader.ReadToEnd();
      6. streamreader.Close();


      Im String response steht dann der Quelltext von codepad.org, mehr aber auch nicht. Also hat das uploaden doch nicht geklappt.
      (Das Thema ist volkommenes Neuland für mich)
      Bau mal vor Stream.Close noch ein Stream.Flush() ein. Sonst landen die POST-Daten nicht im Stream sondern gehen irgentwo in den tiefen deines RAMs verloren ...

      PS: Und lass das www bei WebRequest.Create weg ... dann gehts ;)
      PSS: Das mit dem www liegt am WebServer. Der hat eine eingestellte Regel, dass Anfragen auf www.codepad.org automatisch auf codepad.org (ohne www) umgeleitet werden. Und diese Regel greift vor dem Paste-PHP-Script. Daher gehts nicht.

      Gruß
      florian0

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von florian0 ()