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.
more (3.7kb)
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.
more (3.3kb)
Nun noch ein Auszug aus Wireshark bzgl. Senden und Antwort erhalten.
Senden:
more (822b)
Antwort:
more (970b)
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)