Thread LWP, XML-Daten und X-Died
(4 answers)
Opened by thecoder2012 at 2013-06-24 07:19
Hi,
ich bin bei einem Perl-Problem ratlos. Habe ein Skript mit LWP::UserAgent (und IO::Socket als Alternative) geschrieben das XML-Daten (raw) senden und empfangen soll. Da es bei allen getestet Perl-Versionen (5.10, 5.12, 5.14) und mehreren Systemen (Windows 7, Debian Linux 7) auftritt spielt das wohl keine Rolle. 1. Bei IO::Socket wird mehrere Sekunden auf eine Antwort gewartet obwohl laut Wireshark der Request bereits unter einer Sekunde abgeschlossen ist. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 my $inhalt; my $sock = new IO::Socket::INET ( Timeout => 25, Proto => tcp, PeerAddr => $host, PeerPort => 80 ) || die $!; binmode $sock, 'utf8'; $sock->autoflush(1); print $sock $header.$body; while(<$sock>){ $inhalt .= $_; } $sock->close(); 2. Bei LWP dagegen bricht es ohne Modifikation mit der Fehlermeldung X-Died: Bad chunk-size in HTTP response: <?xml version="1.0" encoding="UTF-8" ?> at C:/Perl/lib/Net/HTTP/Methods.pm line 490. ab. Die Antwort enthält ebenfalls nur XML-Daten aber ist zügig vorhanden. Laut Wireshark ist das Problem in LWP/Perl zu suchen. Modifikation um den Host auszuklammern in Net/HTTP/Methods.pm und LWP macht das was es soll. Eben ein Workaround und keine direkte Lösung. Siehe Code und Anhang. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 my $ua = LWP::UserAgent->new; $ua->agent("xmlClient 1.0"); $ua->timeout(25); my $req = HTTP::Request->new(POST => $url); $req->content_type('text/xml'); $req->content($body); my $res = $ua->request($req); my $inhalt = $res->as_string;#$res->{_content} Nun noch ein Auszug aus Wireshark bzgl. Senden und Antwort erhalten. Senden: Code: (dl
)
1 POST /xml/ HTTP/1.1 Antwort: Code: (dl
)
1 HTTP/1.1 200 OK Ich nutze lieber LWP wegen zusätzlichen Optionen wie Proxys etc. Frage ist woran es liegt das IO::Socket da mehrere Sekunden zu viel wartet bzw. ob ich LWP beibringen kann ohne Codeänderung das dieser nicht den Body parsen soll? Vielleicht übersehe ich etwas (z.B. Optionen) Danke EDIT: Update auf die neuste Version hilft inzwischen. Anhänge Last edited: 2013-09-29 01:14:19 +0200 (CEST) |