Nein, ich benutze IO::Socket. Mit LWP habe ich auch schon erfahrungen gemacht, würde es aber lieber mit IO::Socket machen. Ich finde es so interessanter...
Zum Code: Ich habe die URL abändern müssen, da mein Passwort in der URL verschlüsselt ist ... Der Code sieht etwa so aus:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/perl
use IO::Socket;
$host="irgendeine.url";
$port=80;
print "Create Socket .... ";
socket(SOCKET,PF_INET,SOCK_STREAM,getprotobyname('tcp')) or die "Socket: $!\n";
$addr=sockaddr_in($port,inet_aton($host));
connect(SOCKET,$addr) or die "Connection: $!\n";
if($proxy) {
@site=&getpage("GET http://www.url.com HTTP/1.0\n\n");
}
else {
@site=&getpage("GET / HTTP/1.0\nHost:www.url.com\n\n");
}
foreach $temp (@site) {
if($temp=~m{irgenein Test}) {
push(@temp,$1);
print "$1\n";
}
}
#bis hier Funktioniert es ohne Probleme
$send="POST /irgendein.Script HTTP/1.0\r\nHost: www.url.com\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Debian/1.6-5\r\nAccept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1\r\nAccept-Language: de-ch\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\nReferer: http://www.url.com/irgeindein.script\r\n";
$send2="Content-Type: application/x-www-form-urlencoded\nContent-Length: 69\r\n\nDaten die gesendet werden";
&getpage("$send");
@after=&getpage("$send2");
#in ethereal sieht der gesendete Befehl genau gleich aus wie der von Mozilla aus
#Aber ich erhalte kein HTTP/1.0 200 OK
foreach (@after) {
print "$_\n";
}
close (SOCKET);
sub getpage {
send(SOCKET,"$_[0]",0) or die "Send: $!\n";
@ans="";
do {
$data="";
recv(SOCKET,$data,1024,0);
print "Receiving data ...\n";
push (@ans,$data);
} while($data ne "");
return (@ans);
}