Mario Lüttich: Client Post Request emulieren.

Hallo,

kann ich per script sprache einen webclient emulieren, und somit zu testzwecke einen postrequest erzeugen?
ich habe mich gerade durch LWP::Simple von perl durchgelesen und stosse dort auch auf ein post.
die doku scheint mir soweit verständlich nur eines finde ich dabei nicht. Wie übergebe ich dort variablen und deren werte?

wenn ich ein formular abschicke wird ja bei eine get das ganze an die URL angehängt. aber wie ist das mit einem post?
kann mir jemand ein kurzes beispiel dazu nennen oder eventuell auch eines schreiben? ich sollte für meine anfwendung nicht nur get sondern auch posts testen und wollte dafür kein seperates tools verwenden sondern mir mal schnell was eigenes schreiben. so schwierig dürfte das ja auch nicht sein. nur wo gebe ich dies variablen + inhalt mit??
leider konnte ich in keiner doku dazu was finden weder google gab mir eine doku noch hier im archiv habe ich eine antwort darauf gefunden.

vielen dank Mario

  1. Halihallo Mario

    ich habe mich gerade durch LWP::Simple von perl durchgelesen und stosse dort auch auf ein post.

    Glaube ich dir nicht, LWP::Simple kennt die Methode POST nicht.

    die doku scheint mir soweit verständlich nur eines finde ich dabei nicht. Wie übergebe ich dort variablen und deren werte?

    perldoc LWP::Simple wird dir hierbei nicht helfen. Du möchtest perldoc lwpcook lesen.
    http://www.perldoc.com/perl5.8.0/lib/lwpcook.html (Section: "POST").

    Bei dem Content-Type "application/x-www-form-urlencoded" kannst du der HTTP::Request-
    Instanz Methode "$res->content" den gleichen String übergeben, wie er an die URL bei
    GET-Methode übertragen werden würde.

    <cite>
      use LWP::UserAgent;
      $ua = LWP::UserAgent->new;

    my $req = HTTP::Request->new(POST => 'http://www.perl.com/cgi-bin/BugGlimpse');
      $req->content_type('application/x-www-form-urlencoded');
      $req->content('match=www&errors=0');

    my $res = $ua->request($req);
      print $res->as_string;
    </cite>

    wenn ich ein formular abschicke wird ja bei eine get das ganze an die URL angehängt. aber wie ist das mit einem post?

    Bei POST werden die Daten werden nicht in der URL, sondern im Content des Requests
    übermittelt.

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Hallo,

      danke schon mal.
      Das würde bedeuten folgender Code ist völlig banane??

      use LWP::UserAgent;

      $ua = new LWP::UserAgent;
      $ua->agent("$0/0.1 " . $ua->agent);
      $ua->agent("new&improved");
      $req = new HTTP::Request 'POST' =>
      'http://www.mydomain.org/cgi-bin/test.cgi';
      $req->content_type('application/x-www-form-urlencoded');
      $req->content('testwert=1058891162');

      send request

      $res = $ua->request($req);
      print $res;

      Weil das klappt leider nicht schade schade

      gruss mario

      1. Halihallo Mario

        Das würde bedeuten folgender Code ist völlig banane??

        banane zu welcher Erwartungshaltung?

        send request

        $res = $ua->request($req);
        print $res;

        $res ist ein Objekt. $res->as_string die HTTP-Response.

        Weil das klappt leider nicht schade schade

        Zu so einer Aussage gehört eine Fehlermeldung.

        Viele Grüsse

        Philipp

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        1. hallo,
          hab eben gepostet. hat sich wohl überschnitten.
          nein es gibt keine fehler ?!? weder das error log noch der rückgabe wert ist fehlerträchtig.
          ich bekomme die angeforderte seite aber eben ohne inhalt.
          ohne meine änderungen die ich drinnen haben wollte.
          wenn ich das forumlar absende klappt es.
          die logfiles access.log und auch error.log beinhaltet keine feher zum vorgang. ich betreibe den apache 2.0.47 als den ganz neuen.

      2. hi phillip,

        hab den code nun so umgestrickt.

        #!/usr/bin/perl.exe
        use LWP::UserAgent;

        $ua = LWP::UserAgent->new;
        my $req = HTTP::Request->new(POST => 'mydomain.com/cgi-bin/test.cgi');
        #$req->content_type('application/x-www-form-urlencoded');
        $req->content('testwert=test123456');

        my $res = $ua->request($req);
        print $res->as_string;

        Ich bekomme zwar plausible ergebnisse zurück aber ein post bzw. das was ich nach einem normale post erwarte passiert nicht.
        kein eintrag auf dem server.
        wenn ich das dafür existierende formular absende passt es.
        was mache ichn nur falsch?

        das formular:

        <form action=cgi-bin/test.cgi method=post>
        <input type=hidden name=testwert value="meintestwert 203">
        <input type=submit name=senden value="absenden">
        </form>

        muss der submit button auch noch rein??

        1. Halihallo Mario

          wenn ich das dafür existierende formular absende passt es.
          was mache ichn nur falsch?

          Nun, vergleiche doch einfach die Parameter beim Versenden als GET mit dem, was du im
          Perl-Programm als POST übergibst.

          muss der submit button auch noch rein??

          Wenn das serverseitige Programm dessen Status nicht ignoriert, ja.

          Viele Grüsse

          Philipp

          --
          RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
          Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
          1. wenn ich das dafür existierende formular absende passt es.
            was mache ichn nur falsch?

            Nun, vergleiche doch einfach die Parameter beim Versenden als GET mit dem, was du im
            Perl-Programm als POST übergibst.

            ich übergebe beides mal per post die gleichen parameter.

            muss der submit button auch noch rein??

            Wenn das serverseitige Programm dessen Status nicht ignoriert, ja.

            wär mir nicht bekannt, dass diese variable abgefragt wird.
            Ich tu es in meinem script auf jeden fall nicht.

            aber ich mail dir das mal lieber vollstaendig, dann kannst du selber mal gucken :-))

            gruss mario

            1. Halihallo mario

              wenn ich das dafür existierende formular absende passt es.
              was mache ichn nur falsch?
              Nun, vergleiche doch einfach die Parameter beim Versenden als GET mit dem, was du im
              Perl-Programm als POST übergibst.
              ich übergebe beides mal per post die gleichen parameter.

              Das glaube ich dir nicht.

              muss der submit button auch noch rein??
              Wenn das serverseitige Programm dessen Status nicht ignoriert, ja.
              wär mir nicht bekannt, dass diese variable abgefragt wird.

              Wäre dir nicht bekannt? - Code posten!

              Ich tu es in meinem script auf jeden fall nicht.

              Und das, das online ist? - Ist dies _deines_?

              aber ich mail dir das mal lieber vollstaendig, dann kannst du selber mal gucken :-))

              Kein Gratissupport. Dennoch: Das, was du mir gemailt hast, war aufschlussreich -> über
              dich... :-)

              Viele Grüsse

              Philipp

              --
              RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
              Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
              1. Hallo phillip

                wenn ich das dafür existierende formular absende passt es.

                was mache ichn nur falsch?
                Nun, vergleiche doch einfach die Parameter beim Versenden als GET mit dem, was du im
                Perl-Programm als POST übergibst.
                ich übergebe beides mal per post die gleichen parameter.

                Das glaube ich dir nicht.

                Hattest recht hab tatsächlich ws übersehen...
                es klappt nun aber leider nicht überall.
                wie erreicht man einen cookie austausch?

                muss der submit button auch noch rein??
                Wenn das serverseitige Programm dessen Status nicht ignoriert, ja.
                wär mir nicht bekannt, dass diese variable abgefragt wird.

                Wäre dir nicht bekannt? - Code posten!

                Ich tu es in meinem script auf jeden fall nicht.

                Und das, das online ist? - Ist dies _deines_?

                gewissermassen ja. zumindest habe ich mir inspirationen von einem anderen Gb geholt.

                aber ich mail dir das mal lieber vollstaendig, dann kannst du selber mal gucken :-))

                Kein Gratissupport. Dennoch: Das, was du mir gemailt hast, war aufschlussreich -> über
                dich... :-)

                könntest du mir das mal genauer erklären?
                mail hast du ja..

                Mario

  2. moin,

    kann ich per script sprache einen webclient emulieren, und somit zu testzwecke einen postrequest erzeugen?

    Ja natürlich, es geht mit der libwwww und dem UserAgent. Auf meiner Suite findest du einen eigenen Artikel genau dazu.

    Schönen Sonntag, Rolf

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?