Create an instance of HttpClient
and use it to
execute a GetMethod
object.
Once the method has been executed, the response body can be accessed
as an InputStream
, byte[]
, or
String
. The following example gets the contents of
http://www.discursive.com/jccook/
and retrieves the response body as a string:
import
org.apache.commons.httpclient.HttpClient;import
org.apache.commons.httpclient.HttpException;import
org.apache.commons.httpclient.HttpMethod;import
org.apache.commons.httpclient.methods.GetMethod; HttpClient client =new
HttpClient( ); String url = "http://www.discursive.com/jccook/"; HttpMethod method =new
GetMethod( url );try
{ client.executeMethod( method ); if( method.getStatusCode( ) == HttpStatus.SC_OK ) { String response = method.getResponseBodyAsString( ); System.out.println( response ); } }catch
( HttpException he ) { System.out.println( "HTTP Problem: " + he.getMessage( ) ); }catch
( IOException ioe ) { System.out.println( "IO Exeception: " + ioe.getMessage( ) ); }finally
{ method.releaseConnection( ); method.recycle( ); }
This code retrieves the content of http://www.discursive.com/jccook using the
HTTP GET method. If the response code is
HttpStatus.SC_OK
or 200
, the
response is printed to the console:
<html> <head> <title>JCCook Example</title> </head> <body> <h1>Hello World!</h1> </body> </html>
Note the exception handling involved in this example. Performing a
simple HTTP GET called for two catch blocks:
HttpException
and IOException
.
An HttpException
is thrown if there is a problem
relating to the HTTP protocol, and an IOException
is thrown if there is a problem with the network. Examples in this
chapter omit the rigorous exception handling from the previous
example; you can assume that every call to execute()
is surrounded by the appropriate
try
/catch
block.
GetMethod
is an implementation of the
HttpMethod
interface, which is executed by
HttpClient
. The lifecycle of any
HttpMethod
implementation is straightforward; an
HttpMethod
is created, executed by an instance of
HttpClient
, and, once the response has been
examined, the connection is released and the method is recycled. When
an HttpMethod
object is recycled by a call to
recycle( )
, it is a signal to the system that this
specific HttpMethod
instance can be used again.
releaseConnection( )
instructs
HttpClient
to release the connection that is
associated with an HttpMethod
instance. No matter
what happens during the execution of a method, the
releaseConnection( )
must be called to free
network resources.
Once a method has been executed, you can get the response status code
from method.getStatusCode( )
. This method returns
an int
, which will correspond to one of the
public static final
variables on
HttpStatus
. Some of the more common status codes
on HttpStatus
are SC_OK
(200),
SC_NOT_FOUND
(404),
SC_INTERNAL_SERVER_ERROR
(500),
SC_MOVED_TEMPORARILY
(302), and
SC_UNAUTHORIZED
(401). For a full list of HTTP
status codes, see the Javadoc for HttpStatus
. When
a server sends back a bad HTTP status, it is sometimes accompanied by
a short message. This message can be read by calling
method.getStatusText( )
.
For a formal definition of the HTTP GET method, see Section 9.3 of RFC 2616 at http://www.zvon.org/tmRFC/RFC2616/Output/index.html.
For a full list of HTTP status codes, see the
HttpStatus
Javadoc at http://jakarta.apache.org/commons/httpclient/apidocs/index.html.
3.149.27.72