Класс HttpURLConnection
- Прямые известные подклассы:
HttpsURLConnection
public abstract class HttpURLConnection extends URLConnection
Каждый экземпляр HttpURLConnection используется для выполнения одного запроса, но подлежащее сетевое соединение с HTTP-сервером может быть прозрачно разделено другими экземплярами. Вызов методов close() на потоках InputStream или OutputStream объекта HttpURLConnection после запроса может освободить сетевые ресурсы, связанные с этим экземпляром, но не влияет на любые общие постоянные подключения. Вызов метода disconnect() может закрыть подлежащий сокет, если постоянное соединение в противном случае простаивает в этот момент.
Обработчик протокола HTTP имеет несколько настроек, к которым можно получить доступ через системные свойства. Это охватывает настройки прокси, а также различные другие настройки.
Разрешения безопасности
Если установлен менеджер безопасности, и если вызывается метод, который приводит к попытке открыть соединение, вызывающий метод должен обладать либо:
- «соединением»
SocketPermissionс комбинацией хост/порт целевого URL-адреса или - разрешением
URLPermission, которое разрешает этот запрос.
Если автоматическое перенаправление включено, и этот запрос перенаправляется на другой адрес назначения, вызывающий метод должен также иметь разрешение на подключение к перенаправленному хосту/URL.
- С:
- 1.1
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected int |
chunkLength |
Длина фрагмента при использовании потокового режима с кодированием chunked для вывода. |
protected int |
fixedContentLength |
Фиксированная длина содержимого при использовании потокового режима фиксированной длины. |
protected long |
fixedContentLengthLong |
Фиксированная длина содержимого при использовании потокового режима фиксированной длины. |
static final int |
HTTP_ACCEPTED |
Код состояния HTTP 202: Принято. |
static final int |
HTTP_BAD_GATEWAY |
Код состояния HTTP 502: Плохой шлюз. |
static final int |
HTTP_BAD_METHOD |
Код состояния HTTP 405: Метод запрещён. |
static final int |
HTTP_BAD_REQUEST |
Код состояния HTTP 400: Неверный запрос. |
static final int |
HTTP_CLIENT_TIMEOUT |
Код состояния HTTP 408: Истечение времени ожидания запроса. |
static final int |
HTTP_CONFLICT |
Код состояния HTTP 409: Конфликт. |
static final int |
HTTP_CREATED |
Код состояния HTTP 201: Создано. |
static final int |
HTTP_ENTITY_TOO_LARGE |
Код состояния HTTP 413: Объект запроса слишком большой. |
static final int |
HTTP_FORBIDDEN |
Код состояния HTTP 403: Запрещено. |
static final int |
HTTP_GATEWAY_TIMEOUT |
Код состояния HTTP 504: Истечение времени ожидания шлюза. |
static final int |
HTTP_GONE |
Код состояния HTTP 410: Исчезло. |
static final int |
HTTP_INTERNAL_ERROR |
Код состояния HTTP 500: Внутренняя ошибка сервера. |
static final int |
HTTP_LENGTH_REQUIRED |
Код состояния HTTP 411: Требуется длина. |
static final int |
HTTP_MOVED_PERM |
Код состояния HTTP 301: Постоянно перемещено. |
static final int |
HTTP_MOVED_TEMP |
Код состояния HTTP 302: Временное перенаправление. |
static final int |
HTTP_MULT_CHOICE |
Код состояния HTTP 300: Несколько вариантов. |
static final int |
HTTP_NO_CONTENT |
Код состояния HTTP 204: Без содержимого. |
static final int |
HTTP_NOT_ACCEPTABLE |
Код состояния HTTP 406: Неприемлемо. |
static final int |
HTTP_NOT_AUTHORITATIVE |
Код состояния HTTP 203: Неавторитетная информация. |
static final int |
HTTP_NOT_FOUND |
Код состояния HTTP 404: Не найдено. |
static final int |
HTTP_NOT_IMPLEMENTED |
Код состояния HTTP 501: Не реализовано. |
static final int |
HTTP_NOT_MODIFIED |
Код состояния HTTP 304: Не изменён. |
static final int |
HTTP_OK |
Код состояния HTTP 200: В порядке. |
static final int |
HTTP_PARTIAL |
Код состояния HTTP 206: Частичное содержимое. |
static final int |
HTTP_PAYMENT_REQUIRED |
Код состояния HTTP 402: Оплата требуется. |
static final int |
HTTP_PRECON_FAILED |
Код состояния HTTP 412: Условие не выполнено. |
static final int |
HTTP_PROXY_AUTH |
Код состояния HTTP 407: Требуется аутентификация прокси-сервера. |
static final int |
HTTP_REQ_TOO_LONG |
Код состояния HTTP 414: URL-адрес запроса слишком длинный. |
static final int |
HTTP_RESET |
Код состояния HTTP 205: Сбросить содержимое. |
static final int |
HTTP_SEE_OTHER |
Код состояния HTTP 303: Смотреть другое. |
static final int |
HTTP_SERVER_ERROR |
Устаревшее. Он некорректен и не должен был существовать. |
static final int |
HTTP_UNAUTHORIZED |
Код состояния HTTP 401: Неавторизован. |
static final int |
HTTP_UNAVAILABLE |
Код состояния HTTP 503: Сервис недоступен. |
static final int |
HTTP_UNSUPPORTED_TYPE |
Код состояния HTTP 415: Неподдерживаемый тип носителя. |
static final int |
HTTP_USE_PROXY |
Код состояния HTTP 305: Использовать прокси. |
static final int |
HTTP_VERSION |
Код состояния HTTP 505: Неподдерживаемая версия HTTP. |
protected boolean |
instanceFollowRedirects |
Если true, протокол автоматически выполнит перенаправление. |
protected String |
method |
Метод HTTP (GET, POST, PUT и т. д.). |
protected int |
responseCode |
Числовое значение, представляющее трёхзначный код состояния HTTP. |
protected String |
responseMessage |
Сообщение ответа HTTP. |
Поля, объявленные в классе java.net.URLConnection
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для HttpURLConnection. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
disconnect() |
Указывает, что другие запросы к серверу в ближайшем будущем маловероятны. |
InputStream |
getErrorStream() |
Возвращает поток ошибок, если соединение прервалось, но сервер тем не менее отправил полезные данные. |
static boolean |
getFollowRedirects() |
Возвращает значение, указывающее, следует ли автоматически следовать HTTP-перенаправлениям (3xx). |
String |
getHeaderField |
Возвращает значение поля заголовка с номером n. |
String |
getHeaderFieldKey |
Возвращает ключ поля заголовка с номером n. |
boolean |
getInstanceFollowRedirects() |
Возвращает значение поля instanceFollowRedirects этого HttpURLConnection. |
Permission |
getPermission() |
Возвращает объект SocketPermission, представляющий разрешение, необходимое для подключения к целевому хосту и порту. |
String |
getRequestMethod() |
Получить метод запроса. |
int |
getResponseCode() |
Получить код состояния из сообщения HTTP-ответа. |
String |
getResponseMessage() |
Получить сообщение HTTP-ответа, если оно было возвращено вместе с кодом ответа от сервера. |
void |
setAuthenticator |
Устанавливает Authenticator для использования при запросе аутентификации через протокол HTTP для этого HttpURLConnection. |
void |
setChunkedStreamingMode |
Этот метод используется для включения потоковой передачи тела HTTP-запроса без внутренней буферизации, когда длина содержимого заранее не известна. |
void |
setFixedLengthStreamingMode |
Этот метод используется для включения потоковой передачи тела HTTP-запроса без внутренней буферизации, когда длина содержимого известна заранее. |
void |
setFixedLengthStreamingMode |
Этот метод используется для включения потоковой передачи тела HTTP-запроса без внутренней буферизации, когда длина содержимого известна заранее. |
static void |
setFollowRedirects |
Устанавливает, следует ли автоматически следовать HTTP-перенаправлениям (запросам с кодом ответа 3xx) этим классом. |
void |
setInstanceFollowRedirects |
Устанавливает, следует ли автоматически следовать HTTP-перенаправлениям (запросам с кодом ответа 3xx) экземпляру HttpURLConnection. |
void |
setRequestMethod |
Устанавливает метод для запроса URL, один из: GET POST HEAD OPTIONS PUT DELETE TRACE допустимы, с учетом ограничений протокола. |
abstract boolean |
usingProxy() |
Указывает, проходит ли соединение через прокси. |
Методы, объявленные в классе java.net.URLConnection
addRequestProperty, connect, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentLengthLong, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderFieldDate, getHeaderFieldInt, getHeaderFieldLong, getHeaderFields, getIfModifiedSince, getInputStream, getLastModified, getOutputStream, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString
Подробное описание полей
method
protected String method
chunkLength
protected int chunkLength
-1 означает, что кодировка chunked для вывода отключена.- С:
- 1.5
fixedContentLength
protected int fixedContentLength
-1 означает, что потоковый режим с фиксированной длиной отключен для вывода. ПРИМЕЧАНИЕ: fixedContentLengthLong рекомендуется вместо этого поля, так как оно позволяет задавать большие длины содержимого.
- С:
- 1.5
fixedContentLengthLong
protected long fixedContentLengthLong
-1 означает, что потоковый режим с фиксированной длиной отключен для вывода.- С:
- 1.7
responseCode
protected int responseCode
- 1xx: Информационное
- 2xx: Успех
- 3xx: Перенаправление
- 4xx: Ошибка клиента
- 5xx: Ошибка сервера
responseMessage
protected String responseMessage
instanceFollowRedirects
protected boolean instanceFollowRedirects
true, протокол автоматически будет следовать перенаправлениям. Если false, протокол не будет автоматически следовать перенаправлениям. Это поле устанавливается методом setInstanceFollowRedirects. Его значение возвращается методом getInstanceFollowRedirects.
Его значение по умолчанию основано на значении статического followRedirects во время создания HttpURLConnection.
HTTP_OK
public static final int HTTP_OK
- См. также:
HTTP_CREATED
public static final int HTTP_CREATED
- См. также:
HTTP_ACCEPTED
public static final int HTTP_ACCEPTED
- См. также:
HTTP_NOT_AUTHORITATIVE
public static final int HTTP_NOT_AUTHORITATIVE
- См. также:
HTTP_NO_CONTENT
public static final int HTTP_NO_CONTENT
- См. также:
HTTP_RESET
public static final int HTTP_RESET
- См. также:
HTTP_PARTIAL
public static final int HTTP_PARTIAL
- См. также:
HTTP_MULT_CHOICE
public static final int HTTP_MULT_CHOICE
- См. также:
HTTP_MOVED_PERM
public static final int HTTP_MOVED_PERM
- См. также:
HTTP_MOVED_TEMP
public static final int HTTP_MOVED_TEMP
- См. также:
HTTP_SEE_OTHER
public static final int HTTP_SEE_OTHER
- См. также:
HTTP_NOT_MODIFIED
public static final int HTTP_NOT_MODIFIED
- См. также:
HTTP_USE_PROXY
public static final int HTTP_USE_PROXY
- См. также:
HTTP_BAD_REQUEST
public static final int HTTP_BAD_REQUEST
- См. также:
HTTP_UNAUTHORIZED
public static final int HTTP_UNAUTHORIZED
- См. также:
HTTP_PAYMENT_REQUIRED
public static final int HTTP_PAYMENT_REQUIRED
- См. также:
HTTP_FORBIDDEN
public static final int HTTP_FORBIDDEN
- См. также:
HTTP_NOT_FOUND
public static final int HTTP_NOT_FOUND
- См. также:
HTTP_BAD_METHOD
public static final int HTTP_BAD_METHOD
- См. также:
HTTP_NOT_ACCEPTABLE
public static final int HTTP_NOT_ACCEPTABLE
- См. также:
HTTP_PROXY_AUTH
public static final int HTTP_PROXY_AUTH
- См. также:
HTTP_CLIENT_TIMEOUT
public static final int HTTP_CLIENT_TIMEOUT
- См. также:
HTTP_CONFLICT
public static final int HTTP_CONFLICT
- См. также:
HTTP_GONE
public static final int HTTP_GONE
- См. также:
HTTP_LENGTH_REQUIRED
public static final int HTTP_LENGTH_REQUIRED
- См. также:
HTTP_PRECON_FAILED
public static final int HTTP_PRECON_FAILED
- См. также:
HTTP_ENTITY_TOO_LARGE
public static final int HTTP_ENTITY_TOO_LARGE
- См. также:
HTTP_REQ_TOO_LONG
public static final int HTTP_REQ_TOO_LONG
- См. также:
HTTP_UNSUPPORTED_TYPE
public static final int HTTP_UNSUPPORTED_TYPE
- См. также:
HTTP_SERVER_ERROR
@Deprecated public static final int HTTP_SERVER_ERROR
- См. также:
HTTP_INTERNAL_ERROR
public static final int HTTP_INTERNAL_ERROR
- См. также:
HTTP_NOT_IMPLEMENTED
public static final int HTTP_NOT_IMPLEMENTED
- См. также:
HTTP_BAD_GATEWAY
public static final int HTTP_BAD_GATEWAY
- См. также:
HTTP_UNAVAILABLE
public static final int HTTP_UNAVAILABLE
- См. также:
HTTP_GATEWAY_TIMEOUT
public static final int HTTP_GATEWAY_TIMEOUT
- См. также:
HTTP_VERSION
public static final int HTTP_VERSION
- См. также:
Подробное описание конструкторов
HttpURLConnection
protected HttpURLConnection(URL u)
- Параметры:
-
u- URL
Подробное описание методов
setAuthenticator
public void setAuthenticator(Authenticator auth)
Authenticator, который будет использоваться при запросе аутентификации через протокол HTTP для этого HttpURLConnection. Если аутентификатор не предоставлен, будет использоваться по умолчанию аутентификатор.- Требования к реализации:
- По умолчанию этот метод безусловно генерирует исключение
UnsupportedOperationException. Конкретные реализацииHttpURLConnection, которые поддерживают предоставлениеAuthenticatorдля конкретногоHttpURLConnectionэкземпляра, должны переопределять этот метод, чтобы реализовать другое поведение. - Примечание по реализации:
- В зависимости от схемы аутентификации, реализация может или не может использовать предоставленный аутентификатор для получения пароля. Например, реализация, которая полагается на сторонние библиотеки безопасности, может все равно вызвать аутентификатор по умолчанию, если эти библиотеки настроены на это. Аналогичным образом, реализация, поддерживающая прозрачную аутентификацию NTLM, может позволить системе сначала попытаться подключиться с использованием учетных данных системного пользователя, прежде чем вызывать предоставленный аутентификатор.
Однако, если аутентификатор явно предоставлен, то подключение может быть повторно использовано только дляHttpURLConnectionэкземпляров, которые используют тот жеAuthenticatorэкземпляр, и информация об аутентификации, если кэшируется, может быть повторно использована только дляHttpURLConnection, которые используют тот жеAuthenticator. - Параметры:
-
auth-Authenticator, который должен использоваться этимHttpURLConnection. - Исключения:
-
UnsupportedOperationException- если установка аутентификатора не поддерживается реализацией. -
IllegalStateException- если URLConnection уже подключен. -
NullPointerException- если предоставленныйauthявляетсяnull. - С:
- 9
getHeaderFieldKey
public String getHeaderFieldKey(int n)
n-го поля заголовка. Некоторые реализации могут рассматривать 0-е поле заголовка как специальное, т.е. как строку состояния, возвращаемую сервером HTTP. В этом случае getHeaderField(0) возвращает строку состояния, но getHeaderFieldKey(0) возвращает null.- Переопределяет:
-
getHeaderFieldKeyв классеURLConnection - Параметры:
-
n- индекс, гдеn >=0. - Возвращает:
- ключ для
n-го поля заголовка илиnull, если ключ не существует.
setFixedLengthStreamingMode
public void setFixedLengthStreamingMode(int contentLength)
Будет сгенерировано исключение, если приложение попытается записать больше данных, чем указанная длина содержимого, или если приложение закроет OutputStream до записи указанного объема.
При включенной потоковой передаче данных аутентификация и перенаправление не могут обрабатываться автоматически. При чтении ответа будет сгенерировано исключение HttpRetryException, если требуется аутентификация или перенаправление. Это исключение может быть запрошено для получения подробностей об ошибке.
Этот метод должен вызываться до подключения URLConnection.
ПРИМЕЧАНИЕ: setFixedLengthStreamingMode(long) рекомендуется вместо этого метода, поскольку он позволяет устанавливать большие длины содержимого.
- Параметры:
-
contentLength- Количество байтов, которые будут записаны в OutputStream. - Исключения:
-
IllegalStateException- если URLConnection уже подключен или если другой режим потоковой передачи уже включен. -
IllegalArgumentException- если длина содержимого меньше нуля. - С:
- 1.5
- См. также:
setFixedLengthStreamingMode
public void setFixedLengthStreamingMode(long contentLength)
Будет выброшено исключение, если приложение попытается записать больше данных, чем указанная длина содержимого, или если приложение закроет OutputStream до записи указанного количества.
При включенной потоковой передаче вывода аутентификация и переадресация не могут обрабатываться автоматически. HttpRetryException будет выброшен при чтении ответа, если требуется аутентификация или переадресация. Это исключение можно запросить для получения подробностей об ошибке.
Этот метод должен быть вызван до подключения URLConnection.
Длина содержимого, заданная вызовом этого метода, имеет приоритет над любым значением, установленным setFixedLengthStreamingMode(int).
- Parameters:
-
contentLength- Количество байтов, которые будут записаны в OutputStream. - Throws:
-
IllegalStateException- если URLConnection уже подключено или если другой режим потоковой передачи уже включен. -
IllegalArgumentException- если указана длина содержимого меньше нуля. - Since:
- 1.7
setChunkedStreamingMode
public void setChunkedStreamingMode(int chunklen)
При включенной потоковой передаче вывода аутентификация и переадресация не могут обрабатываться автоматически. HttpRetryException будет выброшен при чтении ответа, если требуется аутентификация или переадресация. Это исключение можно запросить для получения подробностей об ошибке.
Этот метод должен быть вызван до подключения URLConnection.
- Parameters:
-
chunklen- Количество байтов для записи в каждом фрагменте. Если chunklen меньше или равно нулю, будет использовано значение по умолчанию. - Throws:
-
IllegalStateException- если URLConnection уже подключено или если другой режим потоковой передачи уже включен. - Since:
- 1.5
- See Also:
getHeaderField
public String getHeaderField(int n)
n-го поля заголовка. Некоторые реализации могут обрабатывать 0-е поле заголовка как специальное, т. е. как строку состояния, возвращённую HTTP-сервером. Этот метод может быть использован вместе с методом getHeaderFieldKey для перебора всех заголовков в сообщении.
- Overrides:
-
getHeaderFieldв классеURLConnection - Parameters:
-
n- индекс, гдеn>=0. - Returns:
- значение
n-го поля заголовка илиnull, если значение не существует. - See Also:
setFollowRedirects
public static void setFollowRedirects(boolean set)
Если установлен менеджер безопасности, этот метод сначала вызывает метод менеджера безопасности checkSetFactory, чтобы убедиться, что операция разрешена. Это может привести к SecurityException.
- Parameters:
-
set- значение, указывающее, следует ли следовать HTTP-перенаправлениям. - Throws:
-
SecurityException- если менеджер безопасности существует и его методcheckSetFactoryне разрешает операцию. - See Also:
getFollowRedirects
public static boolean getFollowRedirects()
- Returns:
-
true, если HTTP-перенаправления должны следовать автоматически,false- если нет. - See Also:
setInstanceFollowRedirects
public void setInstanceFollowRedirects(boolean followRedirects)
HttpURLConnection. Значение по умолчанию берется из followRedirects, которое по умолчанию равно true.
- Parameters:
-
followRedirects- значение, указывающее, следует ли следовать HTTP-перенаправлениям. - Since:
- 1.3
- See Also:
getInstanceFollowRedirects
public boolean getInstanceFollowRedirects()
instanceFollowRedirects этого экземпляра HttpURLConnection.- Returns:
- значение поля
instanceFollowRedirectsэтого экземпляраHttpURLConnection. - Since:
- 1.3
- See Also:
setRequestMethod
public void setRequestMethod(String method) throws ProtocolException
- GET
- POST
- HEAD
- OPTIONS
- PUT
- DELETE
- TRACE
- Parameters:
-
method- HTTP-метод - Throws:
-
ProtocolException- если метод не может быть сброшен или если запрошенный метод не является допустимым для HTTP. -
SecurityException- если установлен менеджер безопасности и метод равен "TRACE", но NetPermission "allowHttpTrace" не предоставлен. - See Also:
getRequestMethod
public String getRequestMethod()
- Returns:
- метод HTTP-запроса
- See Also:
getResponseCode
public int getResponseCode() throws IOException
HTTP/1.0 200 OK HTTP/1.0 401 UnauthorizedОн вернёт 200 и 401 соответственно. Возвращает -1, если код не может быть определён из ответа (т. е. ответ не является корректным HTTP).
- Returns:
- HTTP код состояния или -1
- Throws:
-
IOException- если произошла ошибка при подключении к серверу.
getResponseMessage
public String getResponseMessage() throws IOException
HTTP/1.0 200 OK HTTP/1.0 404 Not FoundИзвлекает строки "OK" и "Not Found" соответственно. Возвращает null, если ни одно не может быть определено из ответов (результат не был корректным HTTP).
- Returns:
- сообщение HTTP-ответа или
null - Throws:
-
IOException- если произошла ошибка при подключении к серверу.
disconnect
public abstract void disconnect()
usingProxy
public abstract boolean usingProxy()
true, если известно, что соединение использует или использовало прокси, и возвращает false, если соединение никогда не будет использовать прокси или если использование прокси определить нельзя.- Returns:
- логическое значение, указывающее, использует ли соединение прокси.
getPermission
public Permission getPermission() throws IOException
SocketPermission, представляющий разрешение, необходимое для подключения к целевому хосту и порту.- Overrides:
-
getPermissionв классеURLConnection - Returns:
- объект
SocketPermission, представляющий разрешение, необходимое для подключения к целевому хосту и порту. - Throws:
-
IOException- если при вычислении разрешения произошла ошибка.
getErrorStream
public InputStream getErrorStream()
Этот метод не вызовет инициирования подключения. Если подключение не было установлено, или если у сервера не было ошибки во время подключения, или если у сервера была ошибка, но данные об ошибке не были отправлены, этот метод вернёт null. Это значение по умолчанию.
- Returns:
- поток ошибок, если есть, null, если ошибок нет, подключение не установлено или сервер не отправил полезных данных.
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/HttpURLConnection.html