Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chunked http decoding in java?

I am decoding http packets. And I faced a problem that chunk problem. When I get a http packet it has a header and body. When transefer-encoding is chunked I don't know what to do ?

Is there a useful API or class for dechunk the data in JAVA ?

And if someone , experienced about http decoding , please show me a way how to do this ?

like image 989
CodingForever Avatar asked Sep 15 '10 12:09

CodingForever


3 Answers

Use a fullworthy HTTP client like Apache HttpComponents Client or just the Java SE provided java.net.URLConnection (mini tutorial here). Both handles it fully transparently and gives you a "normal" InputStream back. HttpClient in turn also comes with a ChunkedInputStream which you just have to decorate your InputStream with.

If you really insist in homegrowing a library for this, then I'd suggest to create a class like ChunkedInputStream extends InputStream and write logic accordingly. You can find more detail how to parse it in this Wikipedia article.

like image 94
BalusC Avatar answered Sep 27 '22 15:09

BalusC


Apache HttpComponents

Oh, and if we are talking about the client side, HttpUrlConnection does this as well.

like image 39
Maurice Perry Avatar answered Sep 27 '22 17:09

Maurice Perry


If you are looking for a simple API try Jodd Http library (http://jodd.org/doc/http.html). It handles Chunked transfer encoding for you and you get the whole body as a string back.

From the docs:

HttpRequest httpRequest = HttpRequest.get("http://jodd.org");
HttpResponse response = httpRequest.send();

System.out.println(response);
like image 30
Andrejs Avatar answered Sep 27 '22 17:09

Andrejs