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:

  1. Construct a URL object.

  2. Invoke the URL object's openConnection( ) method to retrieve a URLConnection object for that URL.

  3. Invoke the URLConnection 's getInputStream( ) method.

  4. 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.*; 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 

It is no accident that this program is almost the same as Example 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.

Java Network Programming
Java Network Programming, Third Edition
ISBN: 0596007213
EAN: 2147483647
Year: 2003
Pages: 164

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net