gnu.inet.http

Class Request


public class Request
extends Object

A single HTTP request.

Field Summary

protected Authenticator
authenticator
The authenticator.
protected HTTPConnection
connection
The connection context in which this request is invoked.
protected String
method
The HTTP method to invoke.
protected String
path
The path identifying the resource.
protected int
requestBodyNegotiationThreshold
Request body negotiation threshold for 100-continue expectations.
protected RequestBodyWriter
requestBodyWriter
The request body provider.
protected Headers
requestHeaders
The headers in this request.
protected ResponseBodyReader
responseBodyReader
The response body reader.
protected Map
responseHeaderHandlers
Map of response header handlers.

Constructor Summary

Request(HTTPConnection connection, String method, String path)
Constructor for a new request.

Method Summary

Response
dispatch()
Dispatches this request.
HTTPConnection
getConnection()
Returns the connection associated with this request.
Date
getDateHeader(String name)
Returns the value of the specified header in this request as a date.
String
getHeader(String name)
Returns the value of the specified header in this request.
Headers
getHeaders()
Returns the headers in this request.
int
getIntHeader(String name)
Returns the value of the specified header in this request as an integer.
String
getMethod()
Returns the HTTP method to invoke.
String
getPath()
Returns the resource path.
String
getRequestURI()
Returns the full request-URI represented by this request, as specified by HTTP/1.1.
void
setAuthenticator(Authenticator authenticator)
Sets an authenticator that can be used to handle authentication automatically.
void
setHeader(String name, String value)
Sets the specified header in this request.
void
setRequestBody(byte[] requestBody)
Convenience method to set the entire request body.
void
setRequestBodyNegotiationThreshold(int threshold)
Sets the request body negotiation threshold.
void
setRequestBodyWriter(RequestBodyWriter requestBodyWriter)
Sets the request body provider.
void
setResponseBodyReader(ResponseBodyReader responseBodyReader)
Sets the response body reader.
void
setResponseHeaderHandler(String name, ResponseHeaderHandler handler)
Sets a callback handler to be invoked for the specified header name.

Field Details

authenticator

protected Authenticator authenticator
The authenticator.


connection

protected final HTTPConnection connection
The connection context in which this request is invoked.


method

protected final String method
The HTTP method to invoke.


path

protected final String path
The path identifying the resource. This string must conform to the abs_path definition given in RFC2396, with an optional "?query" part, and must be URI-escaped by the caller.


requestBodyNegotiationThreshold

protected int requestBodyNegotiationThreshold
Request body negotiation threshold for 100-continue expectations.


requestBodyWriter

protected RequestBodyWriter requestBodyWriter
The request body provider.


requestHeaders

protected final Headers requestHeaders
The headers in this request.


responseBodyReader

protected ResponseBodyReader responseBodyReader
The response body reader.


responseHeaderHandlers

protected Map responseHeaderHandlers
Map of response header handlers.

Constructor Details

Request

protected Request(HTTPConnection connection,
                  String method,
                  String path)
Constructor for a new request.

Parameters:
connection - the connection context
method - the HTTP method
path - the resource path including query part

Method Details

dispatch

public Response dispatch()
            throws IOException
Dispatches this request. A request can only be dispatched once; calling this method a second time results in a protocol exception.

Returns:
an HTTP response object representing the result of the operation

Throws:
IOException - if an I/O error occurred


getConnection

public HTTPConnection getConnection()
Returns the connection associated with this request.

See Also:
connection


getDateHeader

public Date getDateHeader(String name)
Returns the value of the specified header in this request as a date.

Parameters:
name - the header name


getHeader

public String getHeader(String name)
Returns the value of the specified header in this request.

Parameters:
name - the header name


getHeaders

public Headers getHeaders()
Returns the headers in this request.


getIntHeader

public int getIntHeader(String name)
Returns the value of the specified header in this request as an integer.

Parameters:
name - the header name


getMethod

public String getMethod()
Returns the HTTP method to invoke.

See Also:
method


getPath

public String getPath()
Returns the resource path.

See Also:
path


getRequestURI

public String getRequestURI()
Returns the full request-URI represented by this request, as specified by HTTP/1.1.


setAuthenticator

public void setAuthenticator(Authenticator authenticator)
Sets an authenticator that can be used to handle authentication automatically.

Parameters:
authenticator - the authenticator


setHeader

public void setHeader(String name,
                      String value)
Sets the specified header in this request.

Parameters:
name - the header name
value - the header value


setRequestBody

public void setRequestBody(byte[] requestBody)
Convenience method to set the entire request body.

Parameters:
requestBody - the request body content


setRequestBodyNegotiationThreshold

public void setRequestBodyNegotiationThreshold(int threshold)
Sets the request body negotiation threshold. If this is set, it determines the maximum size that the request body may be before body negotiation occurs(via the 100-continue expectation). This ensures that a large request body is not sent when the server wouldn't have accepted it anyway.

Parameters:
threshold - the body negotiation threshold, or <=0 to disable request body negotation entirely


setRequestBodyWriter

public void setRequestBodyWriter(RequestBodyWriter requestBodyWriter)
Sets the request body provider.

Parameters:
requestBodyWriter - the handler used to obtain the request body


setResponseBodyReader

public void setResponseBodyReader(ResponseBodyReader responseBodyReader)
Sets the response body reader.

Parameters:
responseBodyReader - the handler to receive notifications of response body content


setResponseHeaderHandler

public void setResponseHeaderHandler(String name,
                                     ResponseHeaderHandler handler)
Sets a callback handler to be invoked for the specified header name.

Parameters:
name - the header name
handler - the handler to receive the value for the header


* Request.java * Copyright (C) 2004 The Free Software Foundation * * This file is part of GNU inetlib, a library. * * GNU inetlib is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * GNU inetlib is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Linking this library statically or dynamically with other modules is * making a combined work based on this library. Thus, the terms and * conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce an * executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under * terms of your choice, provided that you also meet, for each linked * independent module, the terms and conditions of the license of that * module. An independent module is a module which is not derived from * or based on this library. If you modify this library, you may extend * this exception to your version of the library, but you are not * obliged to do so. If you do not wish to do so, delete this * exception statement from your version.