Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Работа с сетью > HEAD запрос в HttpURLConnection |
Автор: VoimiX 26.3.2007, 10:49 |
или я тупой или 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 бред..... |
Автор: nagliyvred 2.4.2007, 22:29 |
С чего Вы взяли что при вызове url.openConnection() выполняется GET-запрос? HTTP это же прикладной протокол. Насколько я понимаю (гуру поправьте если неправ) вызов этого метода просто открывает сокет и создает соединение. А что вы в этот сокет потом запишите GET <url> HTTP\1.1 или HEAD <url> HTTP\1.0 или что-то еще - на данном этапе ничем не определено. После того как сокет открыт делайте setRequestMethod("HEAD"); и все остальное - должно работать |
Автор: kkorsakoff 3.4.2007, 10:28 | ||
url.openConnection() по-умолчанию выполняет именно GET-запрос. Если указать setDoOutput() - то запрос будет POST. Вызов openConnection() то может и просто открывает сокет, но при первом же вызове getOutputStream() или getInputStream() он передает GET <url> HTTP\1.1 и всякие заголовки. Так что нельзя писать туда что угодно, первую строку METHOD <url> HTTP/1.1 и заголовки UrlConnection делает сам. Почему нельзя задать метод setRequestMethod()? Надо его вызвать не на закрытом запросе, а на НЕ открытом. Смотрим исходники
|
Автор: nagliyvred 4.4.2007, 00:09 | ||
То что по-умолчанию методом является GET это понятно и, наверно я неправильно выразился, но я не имел ввиду что нужно будет руками загонять в сокет строку запроса. Я хотел сказать что в зависимости от того что потом будет передано во всякие setRequestMethod()'ы, setRequestProperty() и прочие - такой запрос и будет сформирован, и на момент вызова URL.openConnection() все эти параметры еще никуда не отправлены. |
Автор: kkorsakoff 4.4.2007, 01:04 |
Тогда надо использовать простые сокеты. Ну или Apache HttpClient, где все делается легко и просто ![]() Хотя странно, что у автора не получилось и так? |