Görkem: Post-Request mit WWW::Mechanize

Hallo zusammen,

wie lässt sich mit WWW::Mechanize (nicht LWP::UserAgent!) ein Post-Request verschicken?

Gegeben ist eine URL wie etwa http://abc.de/ACTION und ein String "ACTION=UPDATE&LANGUAGE=...etc.", der per Post an o.g. URL versendet werden soll.

Die o.g. erwartet ausdrücklich einen Post-Request.

Auf baldige Antwort freue ich mich natürlich.

Viele Grüße,
Görkem

  1. Hallo,

    wie lässt sich mit WWW::Mechanize (nicht LWP::UserAgent!) ein Post-Request verschicken?

    WWW::Mechanize ist ein Wrapper, der auf HTTP::Request aufsetzt. Siehe also dortn.

    Viele Grüße,
    Hotte

    1. Hi Hotte,

      mit WWW::Mechanize->request($request) komme ich aber nicht weiter. Warum auch immer, im Moment funktionieren nur die WWW::Mechanize-Methoden. Ich bräuchte also ein Äquivalent zu HTTP::Request->content($content), ohne dass ich LWP::UserAgent, HTTP::Request oder HTTP::Response einsetzen muss.

      Viele Grüße,
      Görkem

      Hallo,

      wie lässt sich mit WWW::Mechanize (nicht LWP::UserAgent!) ein Post-Request verschicken?

      WWW::Mechanize ist ein Wrapper, der auf HTTP::Request aufsetzt. Siehe also dortn.

      Viele Grüße,
      Hotte

  2. Moin Moin!

    wie lässt sich mit WWW::Mechanize (nicht LWP::UserAgent!) ein Post-Request verschicken?

    Indem Du WWW::Mechanize auf ein Formular ansetzt, das als Method "POST" angegeben hat.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Hi Alexander,

      ich wünschte, diese Möglichkeit würde sich bieten, allerdings ist es ja kein Formular, das gepostet werden soll. Mir steht nur die URI (wie etwa http://abc.de/action/) und ein content-String (action=update&language=...etc.) zu Verfügung. Die URI enthält also kein Formular, wenn ich sie ohne den content-String aufrufe, erhalte ich eine Fehlermeldung, das ist aber kein HTTP-Statuscode.

      Viele Grüße,
      Görkem

      Moin Moin!

      wie lässt sich mit WWW::Mechanize (nicht LWP::UserAgent!) ein Post-Request verschicken?

      Indem Du WWW::Mechanize auf ein Formular ansetzt, das als Method "POST" angegeben hat.

      Alexander

      1. ich wünschte, diese Möglichkeit würde sich bieten, allerdings ist es ja kein Formular, das gepostet werden soll. Mir steht nur die URI (wie etwa http://abc.de/action/) und ein content-String (action=update&language=...etc.) zu Verfügung. Die URI enthält also kein Formular, wenn ich sie ohne den content-String aufrufe, erhalte ich eine Fehlermeldung, das ist aber kein HTTP-Statuscode.

        So schwer ist das nun wirklich nicht:

        use WWW::Mechanize;  
          
        my $mech = WWW::Mechanize->new;  
        my $url = 'http://example.org/some_script.pl';  
        my $response = $mech->post($url, [ 'field_1' => 'Content', 'field_2' => 'More content' ]);  
        print $response->content if $response->is_success;
        

        Oder über Alexanders Weg:

        my $mech = WWW::Mechanize->new;  
        my $url = 'http://example.org/seite_mit_formular.html';  
        $mech->get($url);  
        my $res = $mech->submit_form( form_number => 1,  
                                      fields      => { 'field_1' => 'Content',  
                                                       'field_2' => 'More Content' }  
                                    );  
        print $res->content if $res->is_success;
        

        Variante 2 setzt natürlich eine HTML-Seite mit einem existierenden Formular voraus, während Variante 1 einen simplen POST-Request absetzt, wie in LWP::UserAgent vorgesehen.

        Siechfred

        --
        Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
        1. Hallo Siechfred,

          Danke vielmals für deine Unterstützung! Nun habe ich Variante 1 eingesetzt. In der entspr. CPAN-Modul-Doku steht ja leider nichts explizit davon, dass WWW::Mechanize eine post-Methode besitzt.

          Viele Grüße,
          Görkem

          1. In der entspr. CPAN-Modul-Doku steht ja leider nichts explizit davon, dass WWW::Mechanize eine post-Methode besitzt.

            Aber sicher doch :)

            „WWW::Mechanize is a proper subclass of LWP::UserAgent and you can also use any of LWP::UserAgent's methods.“

            Siechfred

            --
            Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
  3. wie lässt sich mit WWW::Mechanize (nicht LWP::UserAgent!) ein Post-Request verschicken?

    Verstehe ich nicht, WWW::Mechanize ist eine Instanz von LWP::UserAgent und lässt sich ohne das Modul überhaupt nicht einbinden. Du kannst also ohne Not die post-Methode aus LWP::UserAgent verwenden (für weitere Details siehe Thread auf perlmonks.org).

    Siechfred

    --
    Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
    1. Herrlich ... die Hälfte der FAQ dreht sich um Javascript! :)

      http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/FAQ.pod#JavaScript

      1. Herrlich ... die Hälfte der FAQ dreht sich um Javascript! :)

        http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/FAQ.pod#JavaScript

        Ich weiß zwar nicht was du damit zum Ausdruck bringen möchtest, aber die "Hälfte" die du meinst, beschäftigt sich nur mit dem Thema, dass das Modul eben kein JS unterstützt und der Autor geht darauf gut ein, da er offensichtlich die Fragen kennt, im Prinzip bleibt von den vielen Fragen bezüglich JS, ja nur eine übrig "So what can I do?" die ausführlich beantwortet wird. Und selbst dort dreht sich die Frage nicht "um Javascript" sondern darum wo die Schwierigkeiten für das Modul sind um mit JS umgehen zu können.

        Struppi.

        1. Herrlich ... die Hälfte der FAQ dreht sich um Javascript! :)

          http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/FAQ.pod#JavaScript

          Ich weiß zwar nicht was du damit zum Ausdruck bringen möchtest,

          Eine Genervtheit des Autors die er mit lakonischer Nachhaltigkeit zum Ausdruck bringt!

          im Prinzip bleibt von den vielen Fragen bezüglich JS, ja nur eine übrig "So what can I do?" die ausführlich beantwortet wird.

          Eben, zusätzlich höchstens EIN diplomatisch formuliertes ...

          "There isn't, there wasn't there (most likely) aint't never gonna be Javascript support"

          ... hätte logisch betrachtet auch gereicht.

          Aber scheinbar nicht beim Gros seiner Clientel!

          Ich finds (scheinbar alleine) sehr amüsant! :)

          Grüße
            Kurt

          1. Ich finds (scheinbar alleine) sehr amüsant! :)

            Mir war nicht klar worauf du hinaus wolltest.

            Naja, ein bisschen ich auch, weil man sowas kennt, wenn "Experten" kommen und darauf rumreiten, sowas einfaches muss ja gehen, weil es hier und dort auch geht. Ohne zu erkennen was für ein Aufwand dahinter steht. Wie z.b.  hier

            Mein kleiner Firebug kann doch schon javascript in HTML umwandeln, oder vertu ich mich da.

            Struppi.

            1. Hi

              z.b.  hier

              Mein kleiner Firebug kann doch schon javascript in HTML umwandeln, oder vertu ich mich da.

              was mich jetzt wenigstens auf "Firebug" aufmerksam gemacht hat...
              ... und mich nun zu der Frage führt ob schon jemand die Funktionalitäten von WWW-Mechanize als empfehlenswertes Mozilla-PlugIn realisiert hat, weil man dann ja tatsächlich auch DHTML erfassen könnte.

              Weiß da jmd was?

              Grüße
               Kurt

              BUGREPORT: habe versehentlich Müll in das Feld URL eingetragen, sodass ich nicht posten konnte. Allerdings bekam ich keine sprechende Fehlermeldung und musste ne Zeitlang suchen.