Maik: (Übergabe von Formulardaten), Warum so aber nicht so ?

Hi Leute, (Hi Klaus *g*)

vielleicht kann mir jemand auf die Sprünge helfen ....

Version 1:
use HTTP::Request::Common qw(POST);
$url = 'http://localhost/cgi-bin/ihw/spksuche.pl';
$req = POST $url,[ Eingabe => "$var"];

Version 1 + dem unteren Quelltext läuft einwandfrei

Version 2:
use HTTP::Request::Common;
$url = 'http://localhost/cgi-bin/ihw/spksuche.pl';
http_modul = new HTTP::Request::Common;
$req = $http_modul->(POST $url,[ Eingabe => "$var"]);

Version 2 + dem unteren Quelltext läuft nicht (BrowserFehler: Kann keine Daten übermitteln)

Unterer Quelltext:
  use LWP::UserAgent;
  $ua = LWP::UserAgent->new();
  $response = $ua->request($req);

$Dateipfad = "datei.txt";
  # gibt den Pfad der Datei an
  open(LAMAKOPFDATEI, ">$Dateipfad");
  #öffnet die Datei datei.txt(
  print LAMAKOPFDATEI $response->content();
  # schreibt den Inhalt der Variable "response" in die Datei.
  close(LAMAKOPFDATEI);
  # schließt die Datei datei.txt

if ( $response->is_error() ) {
          print "Error-Code    : ", $response->code() ,    "\n";
          print "Fehlermeldung:  ", $response->message() , "\n";
  }
  else {
          print $response->content() , "\n";
  }

Kann mir dea jemand weitterhelfen, warum Version 2 nicht funktioniert ??
thx
Maik

  1. Hi,

    Version 2 + dem unteren Quelltext läuft nicht (BrowserFehler:

    wieso Browser? Was der anzeigt, ist egal. Was steht im Error-Log? Was passiert, wenn Du das Script an der Shell ausführst?

    Cheatah

    1. Hi,

      Version 2 + dem unteren Quelltext läuft nicht (BrowserFehler:

      wieso Browser? Was der anzeigt, ist egal. Was steht im Error-Log? Was passiert, wenn Du das Script an der Shell ausführst?

      Upps hab ich vergessen zu posten ...

      Can't locate object method "new" via package "HTTP::Request::Common" at d:\apps\apache group\apache\cgi-bin\ihw\auswert.pl

      Sowie es aussieht mag er die:

      $http_modul = new HTTP::Request::Common;

      Zeile nicht. Aber Warum ?

      cu
      Maik

      1. Hi,

        Can't locate object method "new" via package "HTTP::Request::Common" at d:\apps\apache group\apache\cgi-bin\ihw\auswert.pl

        ein kurzer Blick nach

        perldoc HTTP::Request::Common

        zeigt, daß das stimmt - das Modul kennt keine Methode "new". Es füllt Deinen Namespace mit den Funktionen GET, POST, PUT und HEAD; und das war's.

        Aber Warum ?

        Genau: Warum willst Du das eigentlich machen? :-)

        Cheatah

        1. Genau: Warum willst Du das eigentlich machen? :-)

          naja aus dem gleich Grund warum ich vorher

          $GGI-Modul = new CGI;

          gemacht habe. Ich will das Modul nutzen will zb.

          $XXX=$HTTP::Request::Common-Modul->irgendeinBefehl(Irgendwas);

          Aber ohne das ich das Modul in einer VAriable "aktiviere" funzt des doch nicht bzw. wie funzt des dann des zu "aktivieren" um dann die Funktion des Moduls zu nutzen?

          Denn beim CGi-Modul mache ich ja auch
          $XXX=$cgi-modul->irgendeinBefehl(was weis ich);

          Oder geht das bloß beim CGI-Modul so ?

          Danke für deine HIlfe schonmal im voraus !!
          cu
          MAIK

          1. Hallo,

            Es gibt, grob gesagt, zwei Arten von Moduln[1]. Die einen bieten eine Funktionssammlung, welche das Script, oder Modul, welches es Einbindet, verwenden kann. HTTP::Request::Common gehört AFAIK dazu.
            Die andere Art von Moduln bilden Objekte in Perl ab, so wie es auch CGI.pm [2] oder auch DBI.pm usw. machen. Bei diesen gibt es dann meist die von Dir angesprochene 'Methode' new.
            Wie der Zugriff auf die Funktionalität eines Moduls erfolgen kann, steht im einzelnen Fall in der Dokumentation des Moduls, es geht also nicht, daß Du die Zugriffmethode von einem Modul ungesehen auf ein anderes überträgst.

            Am besten, Du liest nochmals 'lwpcook' durch, hier werden einige Bespiele für den HTTP-Zugriff mit Perl aufgeführt.

            Grüße
              Klaus

            [1] Ich bin mir bis heute nicht sicher, ob da Moduln oder Module(n) richtig ist :-(
            [2] genaugenommen bietet CGI.pm sogar beide Möglichkeiten an, also sowohl prozeduraler Zugang als auch den objektorientierten Ansatz