Установить пользовательскую реализацию сокета в HttpUrlConnection

1

Ищем экспертов по сети Java здесь :)

Команда, в которой я участвую, разрабатывает решение, состоящее из части сервера и небольшого клиентского API (и api-impl), который наши клиенты должны развернуть и использовать, чтобы сделать HTTP-запросы на серверную часть.

Один из наших клиентов, который использует API, просит нас предоставить ему новый метод для настройки пользовательской реализации Socket, так что фактическое http-соединение с частью сервера может проходить через его Socket. До сих пор мы использовали HttpsUrlConnection для подключения к серверной части. Вопрос в том, возможно ли каким-либо образом снабдить HttpsUrlConnection собственной реализацией сокета вместо стандартной по умолчанию? Каковы альтернативы? Может ли Apache HttpClient это сделать?

Теги:
networking
sockets
httpurlconnection
apache-httpclient-4.x

2 ответа

3
Лучший ответ

Можно установить SSLSocketFactory на HttpsUrlConnection. Это возможно только с помощью ssl, а не с "простым" HttpUrlConnection.

  • 0
    Как я должен установить эту фабрику соединений перед открытием фактического соединения с помощью .openConnection ()? Установка фабрики соединений по умолчанию не является опцией, так как это повлияет на все остальные исходящие http-соединения программного обеспечения.
  • 0
    Метод openConnection немного вводит в заблуждение. Это на самом деле не устанавливает соединение. Это может произойти как можно раньше, когда вы начнете записывать содержимое в тело запроса (но даже тогда, только если вы установили режим потоковой передачи с фиксированной или фиксированной длиной). По умолчанию фактическое соединение происходит, когда вы запрашиваете что-то об ответе (например, InputStream или код ответа).
Показать ещё 1 комментарий
0

Можно полностью настроить способ создания Apache HttpClient сокетов и подключения к удаленной конечной точке с помощью ConnectionSocketFactory. В этом примере, например, показано, как подключиться к внешнему хосту через прокси-сервер SOCKS

Ещё вопросы

Сообщество Overcoder
Наверх
Меню