(Übergabe von Formulardaten), Warum so aber nicht so ?
Maik
- cgi
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
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
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
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
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
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