Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

System.out.println( EntityUtils.toString(httpResponse.getEntity()) );

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top