Thread Post-Daten an Server senden (17 answers)
Opened by SirLant at 2003-08-14 22:33

stefanos
 2003-08-25 20:26
#6620 #6620
User since
2003-08-15
2 Artikel
BenutzerIn
[default_avatar]
Entweder nutzt du LWP::UserAgent und ähnliche Module.
Alternativ kannst es auch fast ohne Module machen :-)

Das folgende Beispiel zeigt wie es geht:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use Socket;

sub post {
        local($res);
        eval {
        local $SIG{ALRM} = sub { die "alarm\n" };
        alarm(10); # Timeout - 10 Sekunden
        $url = shift;
        $content = shift;
        $referer = shift;
        $content_type = shift || "application/x-www-form-urlencoded";
        $content_length = length($content);

        ($host, $uri) = ($url =~ m!http://(.*?)(/.*)!);

        socket SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp');
        connect SOCK, sockaddr_in(80, inet_aton($host));

        send SOCK, "POST $uri HTTP/1.0\r\nHost: $host\r\n" .
               "Content-Type: $content_type\r\nContent-Length:" .
               "$content_length\r\n\r\n$content", 0;
        0 while <SOCK> !~ /^\r\n$/;
        $res .= $_ while <SOCK>;
        close SOCK;
        alarm(0);
        };
        return($res);
}


Aufruf:
$inhalt = &post("http://www.domain.de/eintrag.cgi","addurl=Submit URL&NewURL=$url");

Kannst du natürlich auch mit IO::Socket machen dort gibt es mehr möglichkeiten z.B.: um einen Timeout zu haben.\n\n

<!--EDIT|stefanos|1061829390-->

View full thread Post-Daten an Server senden