Java Reference
In-Depth Information
CHAPTER 7
URLConnections
URLConnection
is an abstract class that represents an active connection to a resource
specified by a URL. The
URLConnection
class has two different but related purposes.
First, it provides more control over the interaction with a server (especially an HTTP
server) than the
URL
class. A
URLConnection
can inspect the header sent by the server
and respond accordingly. It can set the header fields used in the client request. Finally,
a
URLConnection
can send data back to a web server with
POST
,
PUT
, and other HTTP
request methods. We will explore all of these techniques in this chapter.
Second, the
URLConnection
class is part of Java's
protocol handler
mechanism, which
also includes the
URLStreamHandler
class. The idea behind protocol handlers is simple:
they separate the details of processing a protocol from processing particular data types,
providing user interfaces, and doing the other work that a monolithic web browser
performs. The base
java.net.URLConnection
class is abstract; to implement a specific
protocol, you write a subclass. These subclasses can be loaded at runtime by applications.
For example, if the browser runs across a URL with a strange scheme, such as
com‐
press
, rather than throwing up its hands and issuing an error message, it can download
a protocol handler for this unknown protocol and use it to communicate with the server.
Only abstract
URLConnection
classes are present in the
java.net
package. The concrete
subclasses are hidden inside the
sun.net
package hierarchy. Many of the methods and
fields as well as the single constructor in the
URLConnection
class are
protected
. In other
words, they can only be accessed by instances of the
URLConnection
class or its sub‐
classes. It is rare to instantiate
URLConnection
objects directly in your source code;
instead, the runtime environment creates these objects as needed, depending on the
protocol in use. The class (which is unknown at compile time) is then instantiated using
the
forName()
and
newInstance()
methods of the
java.lang.Class
class.