Java Language Get response body from a URL as a String


Example

String getText(String url) throws IOException {
    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
    //add headers to the connection, or check the status if desired..
    
    // handle error response code it occurs
    int responseCode = conn.getResponseCode();
    InputStream inputStream;
    if (200 <= responseCode && responseCode <= 299) {
        inputStream = connection.getInputStream();
    } else {
        inputStream = connection.getErrorStream();
    }

    BufferedReader in = new BufferedReader(
        new InputStreamReader(
            inputStream));

    StringBuilder response = new StringBuilder();
    String currentLine;

    while ((currentLine = in.readLine()) != null) 
        response.append(currentLine);

    in.close();

    return response.toString();
}

This will download text data from the specified URL, and return it as a String.

How this works:

  • First, we create a HttpUrlConnection from our URL, with new URL(url).openConnection(). We cast the UrlConnection this returns to a HttpUrlConnection, so we have access to things like adding headers (such as User Agent), or checking the response code. (This example does not do that, but it's easy to add.)

  • Then, create InputStream basing on the response code (for error handling)

  • Then, create a BufferedReader which allows us to read text from InputStream we get from the connection.

  • Now, we append the text to a StringBuilder, line by line.

  • Close the InputStream, and return the String we now have.

Notes:

  • This method will throw an IoException in case of failure (such as a network error, or no internet connection), and it will also throw an unchecked MalformedUrlException if the given URL is not valid.

  • It can be used for reading from any URL which returns text, such as webpages (HTML), REST APIs which return JSON or XML, etc.

  • See also: Read URL to String in few lines of Java code.

Usage:

Is very simple:

String text = getText(”http://example.com");
//Do something with the text from example.com, in this case the HTML.