15.2 Reading Data from a Server
Here is the minimal set of steps needed to retrieve data from a URL
using a
URLConnection object:Construct a URL object.Invoke the URL object's
openConnection( ) method to retrieve a
URLConnection object for that URL.Invoke the URLConnection's
getInputStream( ) method.Read from the input stream using the usual stream API.The getInputStream() method returns a generic
InputStream that lets you read and parse the data
that the server sends.
public InputStream getInputStream( )Example 15-1 uses the getInputStream() method to download a web page.
Example 15-1. Download a web page with a URLConnection
import java.net.*;It is no accident that this program is almost the same as Example
import java.io.*;
public class SourceViewer2 {
public static void main (String[] args) {
if (args.length > 0) {
try {
//Open the URLConnection for reading
URL u = new URL(args[0]);
URLConnection uc = u.openConnection( );
InputStream raw = uc.getInputStream( );
InputStream buffer = new BufferedInputStream(raw);
// chain the InputStream to a Reader
Reader r = new InputStreamReader(buffer);
int c;
while ((c = r.read( )) != -1) {
System.out.print((char) c);
}
}
catch (MalformedURLException ex) {
System.err.println(args[0] + " is not a parseable URL");
}
catch (IOException ex) {
System.err.println(ex);
}
} // end if
} // end main
} // end SourceViewer2
7-5. The openStream( ) method of the
URL class just returns an
InputStream from its own
URLConnection object. The output is identical as
well, so I won't repeat it here.The differences between
URL and URLConnection
aren't apparent with just a simple input stream as
in this example. The biggest differences between the two classes are:URLConnection provides access to the HTTP header.URLConnection can configure the request parameters
sent to the server.URLConnection can write data to the server as well
as read data from the server.