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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как проверить валидность URL? 
V
    Опции темы
_Y_
Дата 7.4.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 5
Всего: 34



Здравствуйте. Давно не был. 

Вопрос возник: как можно проверить валидность URL? Т.е. хотелось бы програмно послать запрос по HTTP адресу и проанализировать имеется ли такой адрес. 

В развернутом варианте хотелось бы програмно ответить на несколько вопросов: 
  • Имеется ли такой адрес? 
  • Не перенаправлен ли запрос автоматически по другому адресу?
  • Не перенаправлен ли запрос по 404й ошибке?

Что-то я и не придумаю как к этому подобраться.
Спасибо.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Kangaroo
Дата 7.4.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(_Y_ @  7.4.2009,  16:37 Найти цитируемый пост)
В развернутом варианте хотелось бы програмно ответить на несколько вопросов: 

    * Имеется ли такой адрес? 
    * Не перенаправлен ли запрос автоматически по другому адресу?
    * Не перенаправлен ли запрос по 404й ошибке?

Для этого можно самому послать запрос и по ответу/ошибке выяснить.


--------------------
Lost....
PM MAIL MSN   Вверх
Samotnik
Дата 7.4.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



_Y_, лучше всего отправить асинхронный запрос на сервер, и потом прочитать ответ - он тебе все скажет  smile  Ну и потом действовать по обстоятельствам  smile 
PM MAIL   Вверх
Vasay
Дата 7.4.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



_Y_, 

Откройте сокет, отправьте запрос согласно протоколу http. Прочитайте хидер ответа. Распарсите хидер, на предмет редиректа или ошибок.

Можно и через стандартный java.net.HttpURLConnection сделать.


Можно слегка модифицировать этот код - 
Код

public String getFrom(String urlSrc, String Cookie, String post) {
        URL url = null;
        Socket s = null;
        String Out ="";
        url = new URL(urlSrc);
    
        String host = url.getHost();
        int    port = url.getPort();
        if (port == -1) 
                 port = 80;
        String GET  = url.getQuery();
        String path = url.getPath();
        int post_length = post.length();
        String header;
        if(post.equals(""))
        {
            header = "GET"+ " " + path +"?"+GET+ " HTTP/1.0\r\nAccept: */*\r\nHost: " + host + "\r\nCookie: "+Cookie+"\r\nUser-Agent: "+"MyBrowser"+"\r\nContent-Type: text/html\r\n\r\n";
        }
        else
        {
            header = "POST" + " " + path +"?"+GET+ " HTTP/1.0\r\nAccept: */*\r\nHost: " + host + "\r\nCookie: "+Cookie+"\r\nUser-Agent: "+"MyBrowser"+"\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: "+post_length+"\r\n\r\n"+post;
        }
        
        s = new Socket(host, port);
        
        s.getOutputStream().write(header.getBytes());
          InputStream is = s.getInputStream();
          int Read = 0;
          String line;
            
            
          BufferedReader br = new BufferedReader(
                    new InputStreamReader(is));
            
           
            
            while((line = br.readLine()) !=null)
            {
                Out=Out+line+"\n";
            }
            
            br.close();
            is.close();
            s.close();
  return Out; 
}


Это сообщение отредактировал(а) Vasay - 7.4.2009, 17:33


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
v2v
Дата 7.4.2009, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



велосипедисты, а гугл вам на что? На java.sun.com большая статья на эту тему.

Это сообщение отредактировал(а) v2v - 7.4.2009, 19:27


--------------------
PM   Вверх
_Y_
Дата 9.4.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 5
Всего: 34



Спасибо вроде то, что нужно. Правда надо обрабатывать кучу разных сообщений об ошибках, но без этого, видимо, не обойтись.

v2v, я действительно не эксперт в Гуглении. Эту статью на sun.com я, например, не нашел, а теперь непонятно как мог не найти. Так уж получается что я легко нахожу только то, что и так знаю где лежит smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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