public static class HttpConnection.Response extends HttpConnection.Base<Connection.Response> implements Connection.Response
Modifier and Type | Field and Description |
---|---|
private java.io.InputStream |
bodyStream |
private java.nio.ByteBuffer |
byteData |
private java.lang.String |
charset |
private java.net.HttpURLConnection |
conn |
private java.lang.String |
contentType |
private boolean |
executed |
private boolean |
inputStreamRead |
private static java.lang.String |
LOCATION |
private static int |
MAX_REDIRECTS |
private int |
numRedirects |
private HttpConnection.Request |
req |
private int |
statusCode |
private java.lang.String |
statusMessage |
private static java.util.regex.Pattern |
xmlContentTypeRxp |
cookies, headers, method, url
Modifier | Constructor and Description |
---|---|
(package private) |
Response()
Internal only! Creates a dummy HttpConnection.Response, useful for testing.
|
private |
Response(java.net.HttpURLConnection conn,
HttpConnection.Request request,
HttpConnection.Response previousResponse) |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
body()
Get the body of the response as a plain string.
|
byte[] |
bodyAsBytes()
Get the body of the response as an array of bytes.
|
java.io.BufferedInputStream |
bodyStream()
Get the body of the response as a (buffered) InputStream.
|
Connection.Response |
bufferUp()
Read the body of the response into a local buffer, so that
Connection.Response.parse() may be called repeatedly on the
same connection response (otherwise, once the response is read, its InputStream will have been drained and
may not be re-read). |
java.lang.String |
charset()
Get the character set name of the response, derived from the content-type header.
|
HttpConnection.Response |
charset(java.lang.String charset)
Set / override the response character set.
|
java.lang.String |
contentType()
Get the response content type (e.g.
|
private static java.net.HttpURLConnection |
createConnection(HttpConnection.Request req) |
private static java.util.LinkedHashMap<java.lang.String,java.util.List<java.lang.String>> |
createHeaderMap(java.net.HttpURLConnection conn) |
(package private) static HttpConnection.Response |
execute(HttpConnection.Request req) |
(package private) static HttpConnection.Response |
execute(HttpConnection.Request req,
HttpConnection.Response previousResponse) |
Document |
parse()
Read and parse the body of the response as a Document.
|
private void |
prepareByteData() |
(package private) void |
processResponseHeaders(java.util.Map<java.lang.String,java.util.List<java.lang.String>> resHeaders) |
private void |
safeClose()
Call on completion of stream read, to close the body (or error) stream.
|
private static void |
serialiseRequestUrl(Connection.Request req) |
private static java.lang.String |
setOutputContentType(Connection.Request req) |
int |
statusCode()
Get the status code of the response.
|
java.lang.String |
statusMessage()
Get the status message of the response.
|
private static void |
writePost(Connection.Request req,
java.io.OutputStream outputStream,
java.lang.String boundary) |
addHeader, cookie, cookie, cookies, hasCookie, hasHeader, hasHeaderWithValue, header, header, headers, headers, method, method, multiHeaders, removeCookie, removeHeader, url, url
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addHeader, cookie, cookie, cookies, hasCookie, hasHeader, hasHeaderWithValue, header, header, headers, headers, method, method, multiHeaders, removeCookie, removeHeader, url, url
private static final int MAX_REDIRECTS
private static final java.lang.String LOCATION
private final int statusCode
private final java.lang.String statusMessage
@Nullable private java.nio.ByteBuffer byteData
@Nullable private java.io.InputStream bodyStream
@Nullable private java.net.HttpURLConnection conn
@Nullable private java.lang.String charset
@Nullable private final java.lang.String contentType
private boolean executed
private boolean inputStreamRead
private int numRedirects
private final HttpConnection.Request req
private static final java.util.regex.Pattern xmlContentTypeRxp
Response()
private Response(java.net.HttpURLConnection conn, HttpConnection.Request request, @Nullable HttpConnection.Response previousResponse) throws java.io.IOException
java.io.IOException
static HttpConnection.Response execute(HttpConnection.Request req) throws java.io.IOException
java.io.IOException
static HttpConnection.Response execute(HttpConnection.Request req, @Nullable HttpConnection.Response previousResponse) throws java.io.IOException
java.io.IOException
public int statusCode()
Connection.Response
statusCode
in interface Connection.Response
public java.lang.String statusMessage()
Connection.Response
statusMessage
in interface Connection.Response
public java.lang.String charset()
Connection.Response
charset
in interface Connection.Response
public HttpConnection.Response charset(java.lang.String charset)
Connection.Response
charset
in interface Connection.Response
charset
- to decode body aspublic java.lang.String contentType()
Connection.Response
contentType
in interface Connection.Response
public Document parse() throws java.io.IOException
Connection.Response
Connection.Response.bufferUp()
first.parse
in interface Connection.Response
java.io.IOException
- on errorprivate void prepareByteData()
public java.lang.String body()
Connection.Response
body
in interface Connection.Response
public byte[] bodyAsBytes()
Connection.Response
bodyAsBytes
in interface Connection.Response
public Connection.Response bufferUp()
Connection.Response
Connection.Response.parse()
may be called repeatedly on the
same connection response (otherwise, once the response is read, its InputStream will have been drained and
may not be re-read). Calling Connection.Response.body()
or Connection.Response.bodyAsBytes()
has the same effect.bufferUp
in interface Connection.Response
public java.io.BufferedInputStream bodyStream()
Connection.Response
This method is useful for writing large responses to disk, without buffering them completely into memory first.
bodyStream
in interface Connection.Response
private static java.net.HttpURLConnection createConnection(HttpConnection.Request req) throws java.io.IOException
java.io.IOException
private void safeClose()
private static java.util.LinkedHashMap<java.lang.String,java.util.List<java.lang.String>> createHeaderMap(java.net.HttpURLConnection conn)
void processResponseHeaders(java.util.Map<java.lang.String,java.util.List<java.lang.String>> resHeaders)
@Nullable private static java.lang.String setOutputContentType(Connection.Request req)
private static void writePost(Connection.Request req, java.io.OutputStream outputStream, @Nullable java.lang.String boundary) throws java.io.IOException
java.io.IOException
private static void serialiseRequestUrl(Connection.Request req) throws java.io.IOException
java.io.IOException