PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .html dateien auf externen server


blade_51
06.10.2005, 00:08
hi, ich bring mir grad perl bei, soweit wie möglich ;) und weiß jetzt nicht weiter.

Wenn ich eine Datei auf meinem apache-server öffne geb ich den Pfad an z.B. $url="..\cgi-bin\datei.txt" mach ein Datei-Handle auf, speicher den Datei-Inhalt in einer Variablen und schließe den Handle. Jetzt will ich aber nicht eine Datei auf meinem Server öffnen, sondern eine html-datei auf einem x-beliebigen Server z.B. www.test.de/index.html (http://www.test.de/index.html) um den Inhalt zu parsen.

my $url = "www.test.de/index.html (http://www.test.de/index.html)";
open(HANDLE, "< $url");
@inhalt = <HANDLE>;
close HANDLE;

Dieser quelltext funktioniert leider nicht (ist mir verständlich) --> wie kann ich die Verzeichnis-Ebene meines Servers verlassen ? ich hab was von LWP gelesen bin aber nicht sicher ob das der richtige weg ist ?!

mfg blade_51


Jan Krüger
06.10.2005, 01:49
Ja, LWP kann Verbindungen zu anderen Servern aufbauen, um Daten zu holen. Am einfachsten geht das mit LWP::Simple:

use LWP::Simple;
$inhalt = get($url);

blade_51
06.10.2005, 13:35
wenn ich die cgi-datei ausführe bleibt der browser komischerweise weiß, egal ob ich ein array oder skalar benutze.

#!c:\perl\bin\perl.exe -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use LWP::Simple;

print "Content-type: text/html\n\n";
my @inhalt;
my $url;
$url = "http://www.fantasy-miniatures.de/service.htm";

@inhalt = get($url);
foreach (@inhalt){
print;
}

blade_51
06.10.2005, 23:11
ich geh über einen proxyserver ins internet. liegt es daran ?

butterkeks
07.10.2005, 00:26
zum einen kann es daran liegen, zum anderen bin ich mir nicht sicher, ob get() im Listenkontext funktioniert.

Benutze es sicherheitshalber so, wie im manual angegeben:

# ...
$inhalt = get($url);
# optional:
# @zeilen = split /\n/, $inhalt;


In deinem speziellen Fall kannst du auch gleich getprint() verwenden:

getprint($url);


Wie man einen Proxy verwendet, steht übrigens auch im Manual

blade_51
07.10.2005, 00:54
hab die cgi auf meine webseite geladen und dort funktioniert der code super :cool: . wenn ich von meinem Heim-Pc das script starte kommt folgende Message:

An Error Occurred

500 Can't connect to www.fantasy-miniatures.de:80 (http://www.fantasy-miniatures.de/) (connect: Unknown error)

ich will natürlich erst auf meinem heim-pc testen, fällt euch da was ein ?

beim folgenden code weiß ich nicht recht ob ich $proxy nützlich für mein problem ist.

#!c:\perl\bin\perl.exe -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use LWP::UserAgent;
my $url = "http://www.test.de/test.htm";
my $agent = "UserAgent Test-Skript/v0.01";
my $ua = LWP::UserAgent->new(agent=>$agent);
my $use_proxy = 0;
my $proxy = "???????";
$ua->proxy('http' => "$proxy") if ($use_proxy == 0);
my $request = HTTP::Request->new('GET' => "$url");
my $response = $ua->request($request);
print "Content-type: text/html\n\n";
if ( $response->is_success() ) {
print $response->content();
} else {
print $response->error_as_HTML();
}

Jan Krüger
07.10.2005, 12:06
Sieht doch in Ordnung aus. Geht das denn auch nicht?

blade_51
07.10.2005, 13:56
ich komm halt nicht über den proxy :mauer: als ob ich gegen eine wand laufe.:O

aber ich bin schon froh darüber das der code auf der meine webseite funktioniert, dumm ist eben nur dass ich zum ausprobieren stängig online sein muss um die .cgi auf den server zu laden.
trotzdem danke für die hilfe !!

mfg blade_51

Pharao
07.10.2005, 20:16
>my $proxy = "???????";
hast du es _so_ ausgeführt?

blade_51
09.10.2005, 17:10
rumpf* neee .. da hab ich die proxy-adresse drin gehabt.