Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HttpURLConnection - многократное использование 
V
    Опции темы
Skynin
Дата 27.5.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Интернет честно прошустрил, темы на этом форуме. А ответа так и не нашел.

Разве что Neither the documentation nor the API of the HttpURLConnection class afford us any understanding of how the protocol is implemented отсюда: Dodge the traps hiding in the URLConnection class 
и Работа классов URL/URLConnection

Итак,
Делаю (детали опущены):
Код

HttpURLConnection con = ....

con.setDoOutput(true);

OutputStream  out = con.getOutputStream();
out.write("blah-blah-blah".getBytes());

InputStream inS = con.getInputStream();
...inS.read()...



Все работает (со стороны сервера поцепил свой php скрипт, так что и там получаю что нужно, и ответ сбрасываю в файл)

А вот как дальше мне еще раз использовать con?
На con.setRequestMethod("POST"); выдает - 
java.net.ProtocolException: Can't reset method: already connected

Пробовал и закрывать потоки, и открывать по новой, и еще что-то, но вижу что тыкаться буду долго, а понимания все нет.

Вопрос: После пары POST-GET для того уже URL нужно создавать HttpURLConnection или как-то можно его использовать?
подвопрос: если новый нужно, то к чему тогда указание серверу Keep-Alive, сокет ведь все равно будет новый создаваться?

PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
v2v
Дата 27.5.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 1
Всего: 56



Цитата(Skynin @  27.5.2008,  13:50 Найти цитируемый пост)
После пары POST-GET для того уже URL нужно создавать HttpURLConnection или как-то можно его использовать?

да.

Добавлено через 4 минуты и 32 секунды
JAVADOC: 

Each HttpURLConnection instance is used to make a single request but the underlying network connection to the HTTP server may 
be transparently shared by other instances.


--------------------
PM   Вверх
COVD
Дата 27.5.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 11
Всего: 43



т.е. всякий раз надо создавать новый и закрывать, а повторное использование, если возможно - дело "underlying network connection". 

Аналогичный трюк имеет место при использование пула соединений с базой данных - после использования соединения вызываем close(), а на самом деле соединение возвращается в пул для повторного использования.

А Keep-Alive - этот параметр запроса адресован не только вашему серверу, но и всей цепочке компьютеров в интернете, через которые осуществляется соединение. Все они должны поддерживать этот режим, что, возможно, не гарантировано на 100%. 

Это сообщение отредактировал(а) COVD - 27.5.2008, 15:39
PM MAIL   Вверх
Skynin
Дата 28.5.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Да, v2v, COVD спасибо. Просто в английском слаб, пока не вчитаюсь по буквам, смысла не улавливаю. Вот иногда и нужно чтобы уткнули носом в конкретное предложение smile

Вот касательно Keep-Alive о методе disconnect() - Indicates that other requests to the server are unlikely in the near future.
То бишь - просто дается разрешение - "можно закрывать!", а уж что там, в глубинах джавы произойдет с сокетом, закроется и когда - не нашее дело.

Мне просто нужно было минималистически реализованное "постоянное" соединение с HTTP-сервером, а Jakarta httpclient-3.1 и не нужна вся, и мне пока долго разбираться, где стиль авторов, а где - свойства стандартных классов.
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.