All Packages Class Hierarchy This Package Previous Next Index
Class java.net.URLConnection
java.lang.Object
|
+----java.net.URLConnection
- public abstract class URLConnection
- extends Object
The abstract class URLConnection
is the superclass
of all classes that represent a communications link between the
application and a URL. Instances of this class can be used both to
read from and to write to the resource referenced by the URL. In
general, creating a connection to a URL is a multistep process:
openConnection() |
connect() |
Manipulate parameters that affect the connection to the remote
resource. |
Interact with the resource; query header fields and
contents. |
---------------------------->
time
- The connection object is created by invoking the
openConnection
method on a URL.
- The setup parameters and general request properties are manipulated.
- The actual connection to the remote object is made, using the
connect
method.
- The remote object becomes available. The header fields and the contents
of the remote object can be accessed.
The setup parameters are modified using the following methods:
- setAllowUserInteraction
- setDoInput
- setDoOutput
- setIfModifiedSince
- setUseCaches
and the general request properties are modified using the method:
Default values for the AllowUserInteraction
and
UseCaches
parameters can be set using the methods
setDefaultAllowUserInteraction
and
setDefaultUseCaches
. Default values for general
request properties can be set using the
setDefaultRequestProperty
method.
Each of the above set
methods has a corresponding
get
method to retrieve the value of the parameter or
general request property. The specific parameters and general
request properties that are applicable are protocol specific.
The following methods are used to access the header fields and
the contents after the connection is made to the remote object:
- getContent
- getHeaderField
- getInputStream
- getOutputStream
Certain header fields are accessed frequently. The methods:
- getContentEncoding
- getContentLength
- getContentType
- getDate
- getExpiration
- getLastModified
provide convenient access to these fields. The
getContentType
method is used by the
getContent
method to determine the type of the remote
object; subclasses may find it convenient to override the
getContentType
method.
In the common case, all of the pre-connection parameters and
general request properties can be ignored: the pre-connection
parameters and request properties default to sensible values. For
most clients of this interface, there are only two interesting
methods: getInputStream
and getObject
,
which are mirrored in the URL
class by convenience methods.
More information on the request properties and header fields of
an http
connection can be found at:
http://www.w3.org/hypertext/WWW/Protocols/HTTP1.0/draft-ietf-http-spec.html
- See Also:
- openConnection, connect, getContent, getContentEncoding, getContentLength, getContentType, getDate, getExpiration, getHeaderField, getHeaderField, getInputStream, getLastModified, getOutputStream, setAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDoInput, setDoOutput, setIfModifiedSince, setRequestProperty, setUseCaches
-
allowUserInteraction
- If
true
, this URL
is being examined in
a context in which it makes sense to allow user interactions such
as popping up an authentication dialog.
-
connected
- If
false
, this connection object has not created a
communications link to the specified URL.
-
doInput
- This variable is set by the
setDoInput
method.
-
doOutput
- This variable is set by the
setDoOutput
method.
-
fileNameMap
-
-
ifModifiedSince
- Some protocols support skipping the fetching of the object unless
the object has been modified more recently than a certain time.
-
url
- The URL represents the remote object on the World Wide Web to
which this connection is opened.
-
useCaches
- If
true
, the protocol is allowed to use caching
whenever it can.
-
URLConnection(URL)
- Constructs a URL connection to the specified URL.
-
connect()
- Opens a communications link to the resource referenced by this
URL, if such a connection has not already been established.
-
getAllowUserInteraction()
- Returns the value of the
allowUserInteraction
field for
this object.
-
getContent()
- Retrieves the contents of this URL connection.
-
getContentEncoding()
- Returns the value of the
content-encoding
header field.
-
getContentLength()
- Returns the value of the
content-length
header field.
-
getContentType()
- Returns the value of the
content-type
header field.
-
getDate()
- Returns the value of the
date
header field.
-
getDefaultAllowUserInteraction()
- Returns the default value of the
allowUserInteraction
field.
-
getDefaultRequestProperty(String)
- Returns the value of the default request property.
-
getDefaultUseCaches()
- Returns the default value of a
URLConnection
's
useCaches
flag.
-
getDoInput()
- Returns the value of this
URLConnection
's
doInput
flag.
-
getDoOutput()
- Returns the value of this
URLConnection
's
doOutput
flag.
-
getExpiration()
- Returns the value of the
expires
header field.
-
getHeaderField(int)
- Returns the value for the
n
th header field.
-
getHeaderField(String)
- Returns the value of the specified header field.
-
getHeaderFieldDate(String, long)
- Returns the value of the named field parsed as date.
-
getHeaderFieldInt(String, int)
- Returns the value of the named field parsed as a number.
-
getHeaderFieldKey(int)
- Returns the key for the
n
th header field.
-
getIfModifiedSince()
- Returns the value of this object's
ifModifiedSince
field.
-
getInputStream()
- Returns an input stream that reads from this open connection.
-
getLastModified()
- Returns the value of the
last-modified
header field.
-
getOutputStream()
- Returns an output stream that writes to this connection.
-
getRequestProperty(String)
- Returns the value of the named general request property for this
connection.
-
getURL()
- Returns the value of this
URLConnection
's URL
field.
-
getUseCaches()
- Returns the value of this
URLConnection
's
useCaches
field.
-
guessContentTypeFromName(String)
- Tries to determine the content type of an object, based
on the specified "file" component of a URL.
-
guessContentTypeFromStream(InputStream)
- Tries to determine the type of an input stream based on the
characters at the beginning of the input stream.
-
setAllowUserInteraction(boolean)
- Set the value of the
allowUserInteraction
field of
this URLConnection
.
-
setContentHandlerFactory(ContentHandlerFactory)
- Sets the
ContentHandlerFactory
of an
application.
-
setDefaultAllowUserInteraction(boolean)
- Sets the default value of the
allowUserInteraction
field for all future
URLConnection
objects to the specified value.
-
setDefaultRequestProperty(String, String)
- Sets the default value of a general request property.
-
setDefaultUseCaches(boolean)
- Sets the default value of the
useCaches
field to the
specified value.
-
setDoInput(boolean)
- Sets the value of the
doInput
field for this
URLConnection
to the specified value.
-
setDoOutput(boolean)
- Sets the value of the
doOutput
field for this
URLConnection
to the specified value.
-
setIfModifiedSince(long)
- Sets the value of the
ifModifiedSince
field of
this URLConnection
to the specified value.
-
setRequestProperty(String, String)
- Sets the general request property.
-
setUseCaches(boolean)
- Sets the value of the
useCaches
field of this
URLConnection
to the specified value.
-
toString()
- Returns a
String
representation of this URL connection.
url
protected URL url
- The URL represents the remote object on the World Wide Web to
which this connection is opened.
The value of this field can be accessed by the
getURL
method.
The default value of this variable is the value of the URL
argument in the URLConnection
constructor.
- See Also:
- getURL, url
doInput
protected boolean doInput
- This variable is set by the
setDoInput
method. Its
value is returned by the getDoInput
method.
A URL connection can be used for input and/or output. Setting the
doInput
flag to true
indicates that
the application intends to read data from the URL connection.
The default value of this field is true
.
- See Also:
- getDoInput, setDoInput
doOutput
protected boolean doOutput
- This variable is set by the
setDoOutput
method. Its
value is returned by the getDoInput
method.
A URL connection can be used for input and/or output. Setting the
doOutput
flag to true
indicates
that the application intends to write data to the URL connection.
The default value of this field is false
.
- See Also:
- getDoOutput, setDoOutput
allowUserInteraction
protected boolean allowUserInteraction
- If
true
, this URL
is being examined in
a context in which it makes sense to allow user interactions such
as popping up an authentication dialog. If false
,
then no user interaction is allowed.
The value of this field can be set by the
setAllowUserInteraction
method.
Its value is returned by the
getAllowUserInteraction
method.
Its default value is the value of the argument in the last invocation
of the setDefaultAllowUserInteraction
method.
- See Also:
- getAllowUserInteraction, setAllowUserInteraction, setDefaultAllowUserInteraction
useCaches
protected boolean useCaches
- If
true
, the protocol is allowed to use caching
whenever it can. If false
, the protocol must always
try to get a fresh copy of the object.
This field is set by the setUseCaches
method. Its
value is returned by the getUseCaches
method.
Its default value is the value given in the last invocation of the
setDefaultUseCaches
method.
- See Also:
- setUseCaches, getUseCaches, setDefaultUseCaches
ifModifiedSince
protected long ifModifiedSince
- Some protocols support skipping the fetching of the object unless
the object has been modified more recently than a certain time.
A nonzero value gives a time as the number of seconds since
January 1, 1970, GMT. The object is fetched only if it has been
modified more recently than that time.
This variable is set by the setIfModifiedSince
method. Its value is returned by the
getIfModifiedSince
method.
The default value of this field is 0
, indicating
that the fetching must always occur.
- See Also:
- getIfModifiedSince, setIfModifiedSince
fileNameMap
public static FileNameMap fileNameMap
connected
protected boolean connected
- If
false
, this connection object has not created a
communications link to the specified URL. If true
,
the communications link has been established.
URLConnection
protected URLConnection(URL url)
- Constructs a URL connection to the specified URL. A connection to
the object referenced by the URL is not created.
- Parameters:
- url - the specified URL.
connect
public abstract void connect() throws IOException
- Opens a communications link to the resource referenced by this
URL, if such a connection has not already been established.
If the connect
method is called when the connection
has already been opened (indicated by the connected
field having the value true
), the call is ignored.
URLConnection objects go through two phases: first they are
created, then they are connected. After being created, and
before being connected, various options can be specified
(e.g., doInput and UseCaches). After connecting, it is an
error to try to set them. Operations that depend on being
connected, like getContentLength, will implicitly perform the
connection, if necessary.
- Throws: IOException
- if an I/O error occurs while opening the
connection.
- See Also:
- connected
getURL
public URL getURL()
- Returns the value of this
URLConnection
's URL
field.
- Returns:
- the value of this
URLConnection
's URL
field.
- See Also:
- url
getContentLength
public int getContentLength()
- Returns the value of the
content-length
header field.
- Returns:
- the content length of the resource that this connection's URL
references, or
-1
if the content length is
not known.
getContentType
public String getContentType()
- Returns the value of the
content-type
header field.
- Returns:
- the content type of the resource that the URL references,
or
null
if not known.
- See Also:
- getHeaderField
getContentEncoding
public String getContentEncoding()
- Returns the value of the
content-encoding
header field.
- Returns:
- the content encoding of the resource that the URL references,
or
null
if not known.
- See Also:
- getHeaderField
getExpiration
public long getExpiration()
- Returns the value of the
expires
header field.
- Returns:
- the expiration date of the resource that this URL references,
or 0 if not known. The value is the number of seconds since
January 1, 1970 GMT.
- See Also:
- getHeaderField
getDate
public long getDate()
- Returns the value of the
date
header field.
- Returns:
- the sending date of the resource that the URL references,
or
0
if not known. The value returned is the
number of seconds since January 1, 1970 GMT.
- See Also:
- getHeaderField
getLastModified
public long getLastModified()
- Returns the value of the
last-modified
header field.
The result is the number of seconds since January 1, 1970 GMT.
- Returns:
- the date the resource referenced by this
URLConnection
was last modified, or 0 if not known.
- See Also:
- getHeaderField
getHeaderField
public String getHeaderField(String name)
- Returns the value of the specified header field. Names of
header fields to pass to this method can be obtained from
getHeaderFieldKey.
- Parameters:
- name - the name of a header field.
- Returns:
- the value of the named header field, or
null
if there is no such field in the header.
- See Also:
- getHeaderFieldKey
getHeaderFieldInt
public int getHeaderFieldInt(String name,
int Default)
- Returns the value of the named field parsed as a number.
This form of getHeaderField
exists because some
connection types (e.g., http-ng
) have pre-parsed
headers. Classes for that connection type can override this method
and short-circuit the parsing.
- Parameters:
- name - the name of the header field.
- Default - the default value.
- Returns:
- the value of the named field, parsed as an integer. The
Default
value is returned if the field is
missing or malformed.
getHeaderFieldDate
public long getHeaderFieldDate(String name,
long Default)
- Returns the value of the named field parsed as date.
The result is the number of seconds since January 1, 1970 GMT
represented by the named field.
This form of getHeaderField
exists because some
connection types (e.g., http-ng
) have pre-parsed
headers. Classes for that connection type can override this method
and short-circuit the parsing.
- Parameters:
- name - the name of the header field.
- Default - a default value.
- Returns:
- the value of the field, parsed as a date. The value of the
Default
argument is returned if the field is
missing or malformed.
getHeaderFieldKey
public String getHeaderFieldKey(int n)
- Returns the key for the
n
th header field.
- Parameters:
- n - an index.
- Returns:
- the key for the
n
th header field,
or null
if there are fewer than n
fields.
getHeaderField
public String getHeaderField(int n)
- Returns the value for the
n
th header field.
It returns null
if there are fewer than
n
fields.
This method can be used in conjunction with the
getHeaderFieldKey
method to iterate through all
the headers in the message.
- Parameters:
- n - an index.
- Returns:
- the value of the
n
th header field.
- See Also:
- getHeaderFieldKey
getContent
public Object getContent() throws IOException
- Retrieves the contents of this URL connection.
This method first determines the content type of the object by
calling the getContentType
method. If this is
the first time that the application has seen that specific content
type, a content handler for that content type is created:
- If the application has set up a content handler factory instance
using the
setContentHandlerFactory
method, the
createContentHandler
method of that instance is called
with the content type as an argument; the result is a content
handler for that content type.
- If no content handler factory has yet been set up, or if the
factory's
createContentHandler
method returns
null
, then the application loads the class named:
sun.net.www.content.<contentType>
where <contentType> is formed by taking the
content-type string, replacing all slash characters with a
period
('.'), and all other non-alphanumeric characters
with the underscore character '_
'. The alphanumeric
characters are specifically the 26 uppercase ASCII letters
'A
' through 'Z
', the 26 lowercase ASCII
letters 'a
' through 'z
', and the 10 ASCII
digits '0
' through '9
'. If the specified
class does not exist, or is not a subclass of
ContentHandler
, then an
UnknownServiceException
is thrown.
- Returns:
- the object fetched. The
instanceOf
operation
should be used to determine the specific kind of object
returned.
- Throws: IOException
- if an I/O error occurs while
getting the content.
- Throws: UnknownServiceException
- if the protocol does not support
the content type.
- See Also:
- createContentHandler, getContentType, setContentHandlerFactory
getInputStream
public InputStream getInputStream() throws IOException
- Returns an input stream that reads from this open connection.
- Returns:
- an input stream that reads from this open connection.
- Throws: IOException
- if an I/O error occurs while
creating the input stream.
- Throws: UnknownServiceException
- if the protocol does not support
input.
getOutputStream
public OutputStream getOutputStream() throws IOException
- Returns an output stream that writes to this connection.
- Returns:
- an output stream that writes to this connection.
- Throws: IOException
- if an I/O error occurs while
creating the output stream.
- Throws: UnknownServiceException
- if the protocol does not support
output.
toString
public String toString()
- Returns a
String
representation of this URL connection.
- Returns:
- a string representation of this
URLConnection
.
- Overrides:
- toString in class Object
setDoInput
public void setDoInput(boolean doinput)
- Sets the value of the
doInput
field for this
URLConnection
to the specified value.
A URL connection can be used for input and/or output. Set the DoInput
flag to true if you intend to use the URL connection for input,
false if not. The default is true unless DoOutput is explicitly
set to true, in which case DoInput defaults to false.
- Parameters:
- value - the new value.
- See Also:
- doInput
getDoInput
public boolean getDoInput()
- Returns the value of this
URLConnection
's
doInput
flag.
- Returns:
- the value of this
URLConnection
's
doInput
flag.
- See Also:
- doInput
setDoOutput
public void setDoOutput(boolean dooutput)
- Sets the value of the
doOutput
field for this
URLConnection
to the specified value.
A URL connection can be used for input and/or output. Set the DoOutput
flag to true if you intend to use the URL connection for output,
false if not. The default is false.
- Parameters:
- value - the new value.
- See Also:
- doOutput
getDoOutput
public boolean getDoOutput()
- Returns the value of this
URLConnection
's
doOutput
flag.
- Returns:
- the value of this
URLConnection
's
doOutput
flag.
- See Also:
- doOutput
setAllowUserInteraction
public void setAllowUserInteraction(boolean allowuserinteraction)
- Set the value of the
allowUserInteraction
field of
this URLConnection
.
- Parameters:
- allowuserinteraction - the new value.
- See Also:
- allowUserInteraction
getAllowUserInteraction
public boolean getAllowUserInteraction()
- Returns the value of the
allowUserInteraction
field for
this object.
- Returns:
- the value of the
allowUserInteraction
field for
this object.
- See Also:
- allowUserInteraction
setDefaultAllowUserInteraction
public static void setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)
- Sets the default value of the
allowUserInteraction
field for all future
URLConnection
objects to the specified value.
- Parameters:
- defaultallowuserinteraction - the new value.
- See Also:
- allowUserInteraction
getDefaultAllowUserInteraction
public static boolean getDefaultAllowUserInteraction()
- Returns the default value of the
allowUserInteraction
field.
Ths default is "sticky", being a part of the static state of all
URLConnections. This flag applies to the next, and all following
URLConnections that are created.
- Returns:
- the default value of the
allowUserInteraction
field.
- See Also:
- allowUserInteraction
setUseCaches
public void setUseCaches(boolean usecaches)
- Sets the value of the
useCaches
field of this
URLConnection
to the specified value.
Some protocols do caching of documents. Occasionally, it is important
to be able to "tunnel through" and ignore the caches (e.g., the
"reload" button in a browser). If the UseCaches flag on a connection
is true, the connection is allowed to use whatever caches it can.
If false, caches are to be ignored.
The default value comes from DefaultUseCaches, which defaults to
true.
- See Also:
- useCaches
getUseCaches
public boolean getUseCaches()
- Returns the value of this
URLConnection
's
useCaches
field.
- Returns:
- the value of this
URLConnection
's
useCaches
field.
- See Also:
- useCaches
setIfModifiedSince
public void setIfModifiedSince(long ifmodifiedsince)
- Sets the value of the
ifModifiedSince
field of
this URLConnection
to the specified value.
- Parameters:
- value - the new value.
- See Also:
- ifModifiedSince
getIfModifiedSince
public long getIfModifiedSince()
- Returns the value of this object's
ifModifiedSince
field.
- Returns:
- the value of this object's
ifModifiedSince
field.
- See Also:
- ifModifiedSince
getDefaultUseCaches
public boolean getDefaultUseCaches()
- Returns the default value of a
URLConnection
's
useCaches
flag.
Ths default is "sticky", being a part of the static state of all
URLConnections. This flag applies to the next, and all following
URLConnections that are created.
- Returns:
- the default value of a
URLConnection
's
useCaches
flag.
- See Also:
- useCaches
setDefaultUseCaches
public void setDefaultUseCaches(boolean defaultusecaches)
- Sets the default value of the
useCaches
field to the
specified value.
- Parameters:
- defaultusecaches - the new value.
- See Also:
- useCaches
setRequestProperty
public void setRequestProperty(String key,
String value)
- Sets the general request property.
- Parameters:
- key - the keyword by which the request is known
(e.g., "
accept
").
- value - the value associated with it.
getRequestProperty
public String getRequestProperty(String key)
- Returns the value of the named general request property for this
connection.
- Returns:
- the value of the named general request property for this
connection.
setDefaultRequestProperty
public static void setDefaultRequestProperty(String key,
String value)
- Sets the default value of a general request property. When a
URLConnection
is created, it is initialized with
these properties.
- Parameters:
- key - the keyword by which the request is known
(e.g., "
accept
").
- value - the value associated with the key.
getDefaultRequestProperty
public static String getDefaultRequestProperty(String key)
- Returns the value of the default request property. Default request
properties are set for every connection.
- Returns:
- the value of the default request property for the specified key.
- See Also:
- setDefaultRequestProperty
setContentHandlerFactory
public static synchronized void setContentHandlerFactory(ContentHandlerFactory fac)
- Sets the
ContentHandlerFactory
of an
application. It can be called at most once by an application.
The ContentHandlerFactory
instance is used to
construct a content handler from a content type
- Parameters:
- fac - the desired factory.
- Throws: Error
- if the factory has already been defined.
- See Also:
- ContentHandlerFactory, getContent
guessContentTypeFromName
protected static String guessContentTypeFromName(String fname)
- Tries to determine the content type of an object, based
on the specified "file" component of a URL.
This is a convenience method that can be used by
subclasses that override the
getContentType
method.
- Parameters:
- fname - a filename.
- Returns:
- a guess as to what the content type of the object is,
based upon its file name.
- See Also:
- getContentType
guessContentTypeFromStream
public static String guessContentTypeFromStream(InputStream is) throws IOException
- Tries to determine the type of an input stream based on the
characters at the beginning of the input stream. This method can
be used by subclasses that override the
getContentType
method.
Ideally, this routine would not be needed. But many
http
servers return the incorrect content type; in
addition, there are many nonstandard extensions. Direct inspection
of the bytes to determine the content type is often more accurate
than believing the content type claimed by the http
server.
- Parameters:
- is - an input stream that supports marks.
- Returns:
- a guess at the content type, or
null
if none
can be determined.
- Throws: IOException
- if an I/O error occurs while reading the
input stream.
- See Also:
- mark, markSupported, getContentType
All Packages Class Hierarchy This Package Previous Next Index
Submit a bug or feature