Jeg har det - næsten, næsten, næsten. Dette pokkers Perl-program har underholdt
mig det meste af aftenen. Ja, underholdt. Det er virkelig helt utrolig, så nemt det er
at lave HTTP-forbindelser med Perl. Det må jeg til at gøre lidt mere!
Programmet læser en bestemt .gif fil ind i en multipart MIME-encoded POST. Den
sendes afsted til serveren, men et eller andet går galt. Jeg har efterlignet til punkt
og prikke en tilsvarende HTTP-request sendt fra en rigtig browser til en dummy-server.
Det virker bare ikke. Nu smider jeg koden her, og hvis nogen kan hjælpe med at få
det til at virke, kan vi nok finde ud af et eller andet med points!
use LWP::UserAgent;
$url = new URI::URL("
http://www.hasselager.net/engberg/upload.php");
$hdrs = new HTTP::Headers(Accept => 'text/plain, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*',
MIME_version => '1.0',
content_type => 'multipart/form-data; boundary=PPPP',
user_agent => 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
host => 'localhost',
accept_language => 'da',
Connection => 'Keep-Alive',
Accept_Encoding => 'gzip, deflate');
$content = "";
$content .= "--PPPP\n";
$content .= "MIME-Version: 1.0\n";
$content .= "Content-Disposition: form-data; name=\"vbillede\"; filename=\"c:\\dummy.gif\"\n";
$content .= "Content-Type: image/gif\n\n";
open(F,"C:/windows/profiles/erik/skrivebord/Image33.gif") || die("Could not open file");
binmode(F); # hvis vi er i DOS/Windows
while (read F,$buffer,16384) {
$content .= $buffer;
}
close(F);
$content .= "\n--PPPP--";
$req = new HTTP::Request(POST,$url,$hdrs,$content);
$req->protocol('HTTP/1.1');
$ua = new LWP::UserAgent;
$resp = $ua->request($req);
if ($resp->is_success) {
print $resp->content;
} else {
print $resp->message;
}