Java: Få HTML kod från HTTP Server response

Permalänk
Medlem

Java: Få HTML kod från HTTP Server response

Jag försöker skriva en webproxy som ska blockera webbsidor vars html-kod innehåller visa ord.
När jag läser från en socket får jag Server Response som jag konverterar till string som har följande utseende:

HTTP/1.1 200 OK Date: Tue, 08 Feb 2011 18:51:50 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip Server: gws Content-Length: 14671 X-XSS-Protection: 1; mode=block ‹ÿí}ëzÛ¶²èÿ>ìÚbMÉ¢.¾ˆ¡³?{š[Û$mR×;x‘D›’òMÖkœ'XëÖ äÅÎÌ (osv. har klippt bort resten för storleken skull.

Server response-meddelandet får jag fram i klartext men själva innehållet verkar vara kodat i gzip enligt Content-Encoding: fältet.
Mitt problem är att jag vill kunna läsa html-filer för att se om de innehåller ord som ingår i blockeringsfiltret.
Jag googlade efter ett sätt att unzippa gzippad text men jag får ett exception som säger att texten inte är gzippad.
Jag gissar att det beror på att response-headern är kvar, men jag hittar inget sätt att ta bort headern från den byte array som jag sparat svaret från servern i.

Permalänk
Medlem

om jag minns HTTP rätt, så separeras header från content med en tom rad. detta innebär att du borde kunna söka (från början av din array) efter 2 efter varandra följande CrLf (0x0D + 0x0A) för att ta reda på var header slutar och content börjar.
ett annat alternativ är att avläsa Content-Length och räkna antalet bytes från slutet och klippa bort början.

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

Hur ser din kod ut? Vad är "Server Reponse" för sorts objekt?

Permalänk

Läser du måhända kursen "Datornät och distribuerade system" ?

Visa signatur

Anything that can go wrong will go wrong.

Permalänk
Skrivet av Snejk:

Jag försöker skriva en webproxy som ska blockera webbsidor vars html-kod

HTTP/1.1 200 OK Date: Tue, 08 Feb 2011 18:51:50 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip Server: gws Content-Length: 14671 X-XSS-Protection: 1; mode=block ‹ÿí}ëzÛ¶²èÿ>ìÚbMÉ¢.¾ˆ¡³?{š[Û$mR×;x‘D›’òMÖkœ'XëÖ äÅÎÌ (osv. har klippt bort resten för storleken skull.

Innehållet är komprimerat. Du måste komprimera upp allt efter

X-XSS-Protection: 1; mode=block

Observera att du har ett extra rad som inte är del av datat. Allt efter den radbrytningen är komprimerat data.