public abstract class HttpExchange extends Object
Типичный жизненный цикл HttpExchange показывают в последовательности ниже.
getRequestMethod()
определить команду getRequestHeaders()
исследовать заголовки запроса (если нужно) getRequestBody()
возвраты a InputStream
для того, чтобы считать тело запроса. После чтения тела запроса поток близок. getResponseHeaders()
установить любые заголовки ответа, кроме длиной до контента sendResponseHeaders(int,long)
отправить заголовки ответа. Должен быть вызван перед следующим шагом. getResponseBody()
получить a OutputStream
отправить тело ответа. Когда тело ответа было записано, поток должен быть закрыт, чтобы завершить обмен. close()
делает все эти задачи. Закрытие обмена, не используя все тело запроса не является ошибкой, но может сделать базовое соединение TCP неприменимым для следующих обменов. Эффект того, чтобы быть не в состоянии завершить обмен неопределен, но будет обычно приводить к ресурсам, бывшим не в состоянии быть освобожденными/снова использованными.Модификатор | Конструктор и Описание |
---|---|
protected |
HttpExchange() |
Модификатор и Тип | Метод и Описание |
---|---|
abstract void |
close()
Концы этот обмен, делая следующее в последовательности:
|
abstract Object |
getAttribute(String name)
Модули фильтра могут хранить произвольные объекты с экземплярами HttpExchange как внеполосный коммуникационный механизм.
|
abstract HttpContext |
getHttpContext()
Получите HttpContext для этого обмена
|
abstract InetSocketAddress |
getLocalAddress()
Возвращает локальный адрес, на котором был получен запрос
|
abstract HttpPrincipal |
getPrincipal()
Если аутентификатор будет установлен на HttpContext, которому принадлежит этот обмен, то этот метод возвратится
HttpPrincipal это представляет аутентифицируемого пользователя для этого HttpExchange. |
abstract String |
getProtocol()
Возвращает строку протокола из запроса в форме protocol/majorVersion.minorVersion.
|
abstract InetSocketAddress |
getRemoteAddress()
Возвращает адрес удаленного объекта, вызывающего этот запрос
|
abstract InputStream |
getRequestBody()
возвращает поток, из которого может быть считано тело запроса.
|
abstract Headers |
getRequestHeaders()
Возвращает неизменную Карту, содержащую HTTP-заголовки, которые были включены с этим запросом.
|
abstract String |
getRequestMethod()
Получите метод запроса
|
abstract URI |
getRequestURI()
Получите URI запроса
|
abstract OutputStream |
getResponseBody()
возвращает поток, которому должно быть записано тело ответа.
|
abstract int |
getResponseCode()
Возвращает код ответа, если он был уже установлен
|
abstract Headers |
getResponseHeaders()
Возвращает изменчивую Карту, в которую могут быть сохранены заголовки ответа HTTP и который будет передан как часть этого ответа.
|
abstract void |
sendResponseHeaders(int rCode, long responseLength)
Начинает отсылать ответ назад к клиенту, использующему текущий набор заголовков ответа и числового кода ответа как определено в этом методе.
|
abstract void |
setAttribute(String name, Object value)
Модули фильтра могут хранить произвольные объекты с экземплярами HttpExchange как внеполосный коммуникационный механизм.
|
abstract void |
setStreams(InputStream i, OutputStream o)
Используемый Фильтрами, чтобы обернуть или (или оба) InputStream этого обмена и OutputStream, с данными фильтруемыми потоками так, чтобы последующие звонки
getRequestBody() возвратит данный InputStream , и звонки getResponseBody() возвратит данный OutputStream . |
public abstract Headers getRequestHeaders()
Ключи в Карте являются нечувствительными к регистру.
public abstract Headers getResponseHeaders()
Ключи в Карте являются нечувствительными к регистру.
public abstract URI getRequestURI()
public abstract String getRequestMethod()
public abstract HttpContext getHttpContext()
public abstract void close()
public abstract InputStream getRequestBody()
public abstract OutputStream getResponseBody()
sendResponseHeaders(int,long)
) должен быть вызван до вызова этого метода. Множественные вызовы этого метода (для того же самого обмена) возвратят тот же самый поток. Чтобы правильно завершить каждый обмен, поток вывода должен быть закрыт, даже если никакое тело ответа не отправляется. Закрытие этого потока неявно закрывает InputStream, возвращенный из getRequestBody()
(если это уже не закрывается).
Если бы звонок sendResponseHeaders () определил фиксированную длину тела ответа, то точное число байтов, определенных в том вызове, должно быть записано этому потоку. Если слишком много байтов будут записаны, то запишите (), то бросит IOException. Если слишком немного байтов будут записаны тогда, то поток близко () бросит IOException. В обоих случаях обмен прерывается и базовое закрытое соединение TCP.
public abstract void sendResponseHeaders(int rCode, long responseLength) throws IOException
zero
, тогда разделенное на блоки кодирование передачи используется, и произвольный объем данных может быть отправлен. Приложение завершает тело ответа, закрывая OutputStream. Если у длины ответа есть значение -1
тогда никакое тело ответа не отправляется. Если заголовок ответа длиной до контента не был уже установлен тогда, это устанавливается в значение apropriate в зависимости от параметра длины ответа.
Этот метод нужно вызвать до вызова getResponseBody()
.
rCode
- код ответа, чтобы передатьсяresponseLength
- если> 0, определяет фиксированную длину тела ответа и что точное число байтов должно быть записано потоку, полученному от getResponseBody (), или иначе если равняющийся 0, то разделенное на блоки кодирование используется, и произвольное число байтов может быть записано. если <= -1, then no response body length is specified and
no response body may be written.IOException
getResponseBody()
public abstract InetSocketAddress getRemoteAddress()
public abstract int getResponseCode()
-1
если не доступный все же.public abstract InetSocketAddress getLocalAddress()
public abstract String getProtocol()
public abstract Object getAttribute(String name)
Каждый class Фильтра задокументирует атрибуты, которые они делают доступным.
name
- имя атрибута, чтобы получитьNullPointerException
- если имя null
public abstract void setAttribute(String name, Object value)
Каждый class Фильтра задокументирует атрибуты, которые они делают доступным.
name
- имя, чтобы связаться со значением атрибутаvalue
- объект сохранить как значение атрибута. null
значение разрешается.NullPointerException
- если имя null
public abstract void setStreams(InputStream i, OutputStream o)
getRequestBody()
возвратит данный InputStream
, и звонки getResponseBody()
возвратит данный OutputStream
. Потоки, обеспеченные для этого вызова, должны обернуть исходные потоки, и могут быть (но не обязаны быть), подклассы FilterInputStream
и FilterOutputStream
.i
- фильтруемый входной поток, чтобы установить как inputstream этого объекта, или null
если никакое изменение.o
- фильтруемый поток вывода, чтобы установить как outputstream этого объекта, или null
если никакое изменение.public abstract HttpPrincipal getPrincipal()
HttpPrincipal
это представляет аутентифицируемого пользователя для этого HttpExchange.null
если никакой аутентификатор не устанавливается.
Авторское право © 2005, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92