Announcement

Collapse
No announcement yet.

Formular abschicken mit "individuellem" Submitbutton

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formular abschicken mit "individuellem" Submitbutton

    Hallo zusammen...

    Ich steh vor einerem kleineren oder grösserem Problem.
    Ich will mit einer kleinen VB.Net applikation ein internetformular aufrufen der einen definierten text in das Feld "message schreibt.
    Soweit so gut, das klappt:

    Code:
    WebBrowser1.Document.GetElementById("message").InnerText = "text"

    Nun stellt sich das problem auf den "submit" knopf zu klicken. Da dieser jedoch nicht submit heisst, kann ich auch nicht mit InvokeMemer("submit") arbeiten.

    Code:
    <textarea id="messageTextarea_165f53a112789b569df40bb411655439d9" class="autogrow" cols="20" rows="8" name="message" style="overflow: hidden; display: block;"/>
    Das wäre der quellcode vom Button...

    Ich danke, und grüsse

    Necromancer

  • #2
    Hallo,

    erstellst du da Internetformular selber?

    Normalerweise werden die Daten per HTTP GET/POST an ein Formular gesendet.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo...

      nein, das formular ist nicht von mir, und wird auch nicht über GET/POST gesendet...
      es müsste doch eine einfache möglichkeit geben einen button anzusprechen?

      Comment


      • #4
        und wird auch nicht über GET/POST gesendet...
        Das bezweifle ich - wenn Submit verwendet wird so werden in aller Regel Daten aus dem Formular irgendwohin übergeben. Dies kann bei HTTP nur über GET/POST funktionieren.

        Aus deinem Code kann ich erkennen dass das Formular im Webbrowser-Control dargestellt wird. Öffne die Seite mal mit IE oder FF (oder sonst einen Browser) und gibt einen Text ein und klicke auf Submit. Wird dann auf eine Seite weitergeleitet und an die Adresse ein Querystring angehängt (zB http://www.test.at?text=blabal) so werden die Daten per GET übergeben. Ansonsten mit POST.

        Die GET-Variante ist somit einfach zu programmieren. Es muss nur an die URL der Querystring angehängt werden (HTML-kodiert).

        Bei der POST-Variante muss zuerst der Aufbau des HTTP-Headers analysiert werden.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          es wird ja eben gerade nicht den typischen "submit" button verwendet, sonst hätte es ja funktioniert.

          also GET istes mal ganz sicher nicht, da der text bzw. der kommentar nicht im url angehängt wird.
          kann sich also um POST handeln...
          HTTP-Headers analysieren?

          Comment


          • #6
            HTTP-Headers analysieren?
            Das kann mit HTTP-Sniffern erledigt werden.

            Bei Firefox gibts es zB ein AddOn das TamperData heißt mit dem auch die HTTP-Header angezeigt werden kann.
            So etwas gibt es auch für IE und hieß mal Fiddler (glaube ich).

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              ok hab's mal "geloggt"
              wie geht es jetzt weiter? was muss ich im vb.net machen?

              Comment


              • #8
                Wenn du es korrekt geloggt hast dann weißt du jetzt wie mit POST die Werte erwartet werden.

                Nun zum VB-Teil:
                Mit der HttpWebRequest-Klasse kannst du auf eine Website (das Formular) zugreifen und in den Eigenschaften des HttpWebRequest-Objects die POST-Variablen übergeben -> fertig.

                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  Ich glaube dass ich dich bisher nicht ganz richtig verstanden habe und deshalb habe ich in die andere Richtung gedacht.

                  Dir gehts es darum im Webbrowser die Steuerung zu simulieren - oder?

                  Hab das mal mit folgenden HTML-Formular getestet:
                  Code:
                  <html xmlns="http://www.w3.org/1999/xhtml">
                  	<head>
                  		<title>Einfacher Test</title>
                  	</head>
                  	<body>
                  		<input id="Text1" type="text" />
                  		<input id="Button1" type="button" value="button" onclick="javascript:alert('Hallo')" />
                  	</body>
                  </html>
                  Der Code zur Ausführung (in C# sollte aber auch für VB.net verständlich sein):
                  [highlight=c#]
                  using System;
                  using System.IO;
                  using System.Windows.Forms;

                  namespace WindowsFormsApplication1
                  {
                  public partial class Form1 : Form
                  {
                  public Form1()
                  {
                  InitializeComponent();
                  }

                  private void Form1_Load(object sender, EventArgs e)
                  {
                  webBrowser1.Navigate(Path.Combine(
                  Application.StartupPath,
                  "Test.htm"));
                  }

                  private void button1_Click(object sender, EventArgs e)
                  {
                  HtmlDocument doc = webBrowser1.Document;
                  HtmlElement element = doc.GetElementById("Text1");
                  element.InnerText = "Test";
                  }

                  private void button2_Click(object sender, EventArgs e)
                  {
                  HtmlDocument doc = webBrowser1.Document;
                  HtmlElement element = doc.GetElementById("Button1");
                  element.RaiseEvent("onclick");
                  }
                  }
                  }
                  [/highlight]
                  Hier wird das "onclick"-Ereignis durch RaiseEvent ausgelöst.

                  Hoffe dass ich diesmal helfen konnte - sorry wegen der kleinen Irreleitung.

                  mfG Gü
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment

                  Working...
                  X