java.lang.Object
com.renomad.minum.web.Request
- All Implemented Interfaces:
IRequest
An HTTP request.
From Wikipedia
A client sends request messages to the server, which consist of:
-
a request line, consisting of the case-sensitive request
method, a space, the requested URL, another space, the
protocol version, a carriage return, and a line feed, e.g.:
GET /images/logo.png HTTP/1.1
-
zero or more request header fields (at least 1 or more
headers in case of HTTP/1.1), each consisting of the case-insensitive
field name, a colon, optional leading whitespace, the field
value, an optional trailing whitespace and ending with a
carriage return and a line feed, e.g.:
Host: www.example.com Accept-Language: en
- an empty line, consisting of a carriage return and a line feed;
- an optional message body. In the HTTP/1.1 protocol, all header fields except Host: hostname are optional.
A request line containing only the path name is accepted by servers to maintain compatibility with HTTP clients before the HTTP/1.0 specification in RFC 1945.
-
Constructor Summary
ConstructorDescriptionRequest
(Headers headers, RequestLine requestLine, String remoteRequester, ISocketWrapper socketWrapper, IBodyProcessor bodyProcessor) Constructor for a HTTP request -
Method Summary
Modifier and TypeMethodDescriptionboolean
getBody()
This getter will process the body data fully on the first call, and cache that data for subsequent calls.This method provides anIterable
for getting the partitions of a multipart-form formatted body in an HTTP request.Gets a string of the ip address of the client sending this request.Obtain information about the first line.This getter is expected to be used for situations required finer-grained control over the socket, such as when dealing with streaming input like a game or chat, or receiving a very large file like a video.This method provides anIterable
for getting the key-value pairs of a URL-encoded body in an HTTP request.int
hashCode()
toString()
-
Constructor Details
-
Request
public Request(Headers headers, RequestLine requestLine, String remoteRequester, ISocketWrapper socketWrapper, IBodyProcessor bodyProcessor) Constructor for a HTTP request- Parameters:
remoteRequester
- This is the remote address making the request
-
-
Method Details
-
getHeaders
- Specified by:
getHeaders
in interfaceIRequest
-
getRequestLine
Description copied from interface:IRequest
Obtain information about the first line. An example of a RequestLine is:GET /foo?bar=baz HTTP/1.1
- Specified by:
getRequestLine
in interfaceIRequest
-
getBody
Description copied from interface:IRequest
This getter will process the body data fully on the first call, and cache that data for subsequent calls.
If there is a need to deal with very large data, such as large images or videos, consider usingIRequest.getSocketWrapper()
instead, which will allow fine-grained control over pulling the bytes off the socket.
For instance, if expecting a video (a large file), it may be prudent to store the data into a file while it downloads, so that the server does not need to hold the entire file in memory. -
getRemoteRequester
Description copied from interface:IRequest
Gets a string of the ip address of the client sending this request. For example, "123.123.123.123"- Specified by:
getRemoteRequester
in interfaceIRequest
-
getSocketWrapper
Description copied from interface:IRequest
This getter is expected to be used for situations required finer-grained control over the socket, such as when dealing with streaming input like a game or chat, or receiving a very large file like a video. This will enable the user to read and send on the socket - powerful, but requires care.
Note: This is an unusual method.
It is an error to call this in addition toIRequest.getBody()
. Use one or the other. Mostly, expect to use getBody unless you really know what you are doing, such as streaming situations or custom body protocols.- Specified by:
getSocketWrapper
in interfaceIRequest
-
equals
-
hashCode
public int hashCode() -
toString
-
getUrlEncodedIterable
Description copied from interface:IRequest
This method provides anIterable
for getting the key-value pairs of a URL-encoded body in an HTTP request. This method is intended to be used for situations where the developer requires greater control, for example, if allowing large uploads such as videos.
If this extra level of control is not needed, the developer would benefit more from using theIRequest.getBody()
method, which is far more convenient.- Specified by:
getUrlEncodedIterable
in interfaceIRequest
-
getMultipartIterable
Description copied from interface:IRequest
This method provides anIterable
for getting the partitions of a multipart-form formatted body in an HTTP request. This method is intended to be used for situations where the developer requires greater control, for example, if allowing large uploads such as videos.
If this extra level of control is not needed, the developer would benefit more from using theIRequest.getBody()
method, which is far more convenient.- Specified by:
getMultipartIterable
in interfaceIRequest
-