views:

147

answers:

2

I'm fetching a web page using the Apache httpcomponents Java library. After connecting the result I get is an HttpEntity which has a method getContent() which returns an InputStream and also has a method writeTo() which writes to an OutputStream.

I want to turn the result into a String for extracting information. What is the most elegant (and safe) way to do this?

Some possible solutions:

  • Write to a ByteArrayOutputStream and then convert those bytes to a String with a String constructor
  • use InputStreamReader to read straight from the stream, and put into a StringBuilder

Both of these feel a bit ugly. Would you recommend choosing one of these or something else?

A: 

It may be ugly, but I think that's the only way to do it. You can use IOUtils.toString() from Commons-IO though without having to write your own code.

Mirko Nasato
+2  A: 

What about (pseudo):

BasicResponseHandler handler = new org.apache.http.impl.client.BasicResponseHandler ();    
String str = httpClient.execute(request, handler);

You would have to handle exceptions on your own in this case.

Nate