Http-response

daniel_sun

Erfahrenes Mitglied
Hallo,

ich sitze zur Zeit an einem Programm, mit dem ich über eine TCP-Verbindung HTTP-Requests stelle.

Bsp:

GET http://www.web.de HTTP/1.1\r\n
Host: www.web.de\r\n

Das funktioniert auch soweit super und ich bekomme vom Server den gewünschten Response. Diesen Puffer ich, bevor ich ihn als Datei abspeicher.

Code-Teil zum Puffern:
Code:
 InputStreamReader inReader = new InputStreamReader(inStream);
            char[] buffer = new char[8192];
            int amountRead;
            StringBuilder data = new StringBuilder();
            while((amountRead = inReader.read(buffer)) > 0){
                    data.append(buffer, 0, amountRead);
            }

Mein Problem ist nun das der Server die Daten mit der Option Transfer-Encoding: chunked sendet. Daher hab ich in meiner Datei in unregelmäßigen abständen Hexadezimale zahlen stehen.

Ich gehe davon aus, dass es sich um das Ende des jeweiligen Chunks handelt. Leider habe ich keine ahnung wie ich aus den empfangenen Daten die werte rausfiltern kann damit ich das reine HTML-Dokument (mit Header) bekomme.

Einige der Hexwerte:

HTTP/1.1 200 OK
Date: Mon, 21 May 2012 14:49:40 GMT
Server: Apache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache, no-store, public
Vary: User-Agent,Accept-Encoding
X-Appserver: hp-webde003
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked

f95
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

oder

<li class="first" id="headerNavFreePhone" style="z-index: 99;"><div class="item"><a href="http://mobile.1und1.de?ac=OM.PW.PW008K19847B7070a "><span>FreePhone</span></a></div><div class="disq"><div class="check"></div><div class="content"><a href="http://mobile.1und1.de?ac=OM.PW.PW008K19847B7070a ">Jetzt mit SMS-Flat!</a></div></div></li><li id="headerNavFreeMail" s
1063
tyle="z-index: 98;">

Ich hoffe ihr habt nen heißen Tip für mich!

Gruß
daniel_sun
 
Hi,
also wenn du nicht darauf bestehst, dass wirklich selber zu machen, dann kannst du auch die Commons-Library HttpClient dafür verwenden. Die nimmt dir das alles ab und du kannst dann direkt auf alle Teile des Headers bzw. Contents zugreifen.

Gruß

Fabio
 
Zurück