How to Download a File in Java
Nowadays any non trivial application written in Java would need to access cloud services over HTTP. Whether you are accessing a cloud web service or trying to download a webpage programmatically, the approach is same. Java provides a dedicated class HttpURLConnection for getting data over the HTTP protocol. The following sample Java program demonstrates the use of HttpURLConnection to download a web page. The following Java program would print the contents of Google's home page (http://www.google.com) on the command line console.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Java program to download a web page over http protocol. * Requires active Internet connection. */ public class DownloadPage { public static void main(String[] args) { String pageToDownload = "http://www.google.com"; String downloadedContent = downloadPage(pageToDownload); System.out.println(downloadedContent); } /** * Download a webpage using HttpURLConnection class. * @param pageToDownload * @return */ private static String downloadPage(String pageToDownload) { String result = ""; try { URL url = new URL(pageToDownload); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); // we are getting the contents connection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder stringBuilder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { stringBuilder.append(line + "\n"); } reader.close(); result = stringBuilder.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } }
The same approach can be used to access a cloud web service returning XML or JSON data. The following sample Java program demonstrates the use of HttpURLConnection to return 7 day weather forecast of London City using the OpenWeatherMap API. The data returned is in JSON format,
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Uses OpenWeatherMap API and HttpURLConnection to download 7 day weather * forecast of London city in JSON format. */ public class WeatherDownload { public static void main(String[] args) { // Please see http://openweathermap.org/forecast16 String weatherAPIUrl = "http://api.openweathermap.org/data/2.5/forecast/daily?q=London&mode=json&units=metric&cnt=7&appid=bd82977b86bf27fb59a04b61b657fb6f"; String downloadedContent = downloadWeather(weatherAPIUrl); System.out.println("7 day weather forecast of London city"); System.out.println(downloadedContent); } /** * Access a cloud API using HttpURLConnection class. * @param weatherAPIUrl * @return */ private static String downloadWeather(String weatherAPIUrl) { String result = ""; try { URL url = new URL(weatherAPIUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); // we are getting the contents connection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder stringBuilder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { stringBuilder.append(line + "\n"); } reader.close(); result = stringBuilder.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } }