Thread Net::HTTP interner Puffer (14 answers)
Opened by rosti at 2011-03-19 23:01

rosti
 2011-03-21 10:00
#146688 #146688
User since
2011-03-19
3513 Artikel
BenutzerIn
[Homepage]
user image
hi Murphy,

vielen Dank für Dein Feedback!

Meine Client-Server-Anwendung, an der ich schon länger schreibe, erfordert es, dass kein TE (chunked) stattfindet. In Net::HTTP kann ich das abstellen, indem ich HTTP/1.0 einstelle, da habe ich jedoch das Problem mit dem internen Buffer. Mit LWP::UserAgent habe ich :content_cb getestet, da findet jedoch ein TE statt und die Response ist chunked, ich habe in LWP keine Möglichkeit gefunden, das TE abzustellen (oder ich bin blind *G).

Indes, mein neues Modul Net::HTTP10 ist so gut wie fertig, Synopsis:

Code (perl): (dl )
1
2
3
4
5
6
my $s = Net::HTTP10->new($sockattr, $headers) or die "Kein Socket";
#print dump $s, "\n"; 
$s->request;
my($code, $mess, $href) = $s->read_headers or die;
printf "Status: %s Mesg: %s \nHeaders: %s\n", $code, $mess, dump $href;
#$s->body_callback;


printf:
Code: (dl )
1
2
3
4
5
6
7
Status: 200 Mesg: OK 
Headers: {
Connection => "close",
"Content-Type" => "application/octet-stream",
Date => "Mon, 21 Mar 2011 08:57:09 GMT",
Server => "Apache/2.2.14 (Win32) PHP/5.3.0",
}


Die an ($s->body_callback) angebundene callback()-Funktion liest direkt aus dem Socket die Byte-Sequenzen und ist benutzerspezifisch anzupassen. Hier ist die API ziemlich offen, aber ich sehe keine andere Möglichkeit, in meinen Tests läuft es wie geschmiert ;)

Edit: Es läuft sauber ;)

Viele Grüße,
Rolf



modedit Editiert von pq: code--tags um dumper-ausgabe hinzugefügt
Last edited: 2011-03-21 11:29:02 +0100 (CET)

View full thread Net::HTTP interner Puffer