![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
VoimiX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 11.8.2006 Репутация: нет Всего: нет |
или я тупой или Java....
нужно оправить HEAD запрос к веб-ресурсу чтоб просто запросить ресурс через GET делается так: URL image_url = new URL("http://localhost/images/Slide.jpg"); HttpURLConnection http = (HttpURLConnection)image_url.openConnection(); Я так понял объект HttpURLConnection можно получить только через вызов URL.openConnection() да вот только какой метод указать нельзя... конечно в HttpURLConnection есть метод setRequestMethod, но чтоб вызвать его HttpURLConnection нужно закрыть.... т.е. получается чтоб оправить HEAD запрос нужно сделать так: URL image_url = new URL("http://localhost/images/Slide.jpg"); HttpURLConnection http = (HttpURLConnection)image_url.openConnection();//здесь вызывается GET метод http.disconnect(); http.setRequestMethod("HEAD");//вызываем НУЖНЫЙ НАМ МЕТОД http.connect(); это же извращенство... можно ли вызвать один метод HEAD??? а то получается , чтоб отправить HEAD по-любому придётся оправить GET бред..... |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
||||
|
||||
nagliyvred |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 2.10.2005 Репутация: нет Всего: 3 |
С чего Вы взяли что при вызове url.openConnection() выполняется GET-запрос? HTTP это же прикладной протокол. Насколько я понимаю (гуру поправьте если неправ) вызов этого метода просто открывает сокет и создает соединение. А что вы в этот сокет потом запишите GET <url> HTTP\1.1 или HEAD <url> HTTP\1.0 или что-то еще - на данном этапе ничем не определено. После того как сокет открыт делайте setRequestMethod("HEAD"); и все остальное - должно работать
|
|||
|
||||
kkorsakoff |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 14 |
url.openConnection() по-умолчанию выполняет именно GET-запрос. Если указать setDoOutput() - то запрос будет POST. Вызов openConnection() то может и просто открывает сокет, но при первом же вызове getOutputStream() или getInputStream() он передает GET <url> HTTP\1.1 и всякие заголовки.
Так что нельзя писать туда что угодно, первую строку METHOD <url> HTTP/1.1 и заголовки UrlConnection делает сам. Почему нельзя задать метод setRequestMethod()? Надо его вызвать не на закрытом запросе, а на НЕ открытом. Смотрим исходники
|
|||
|
||||
nagliyvred |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 2.10.2005 Репутация: нет Всего: 3 |
То что по-умолчанию методом является GET это понятно и, наверно я неправильно выразился, но я не имел ввиду что нужно будет руками загонять в сокет строку запроса. Я хотел сказать что в зависимости от того что потом будет передано во всякие setRequestMethod()'ы, setRequestProperty() и прочие - такой запрос и будет сформирован, и на момент вызова URL.openConnection() все эти параметры еще никуда не отправлены. |
|||
|
||||
kkorsakoff |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 14 |
Тогда надо использовать простые сокеты.
Ну или Apache HttpClient, где все делается легко и просто ![]() Хотя странно, что у автора не получилось и так? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |