Как проверить существование URL?

Previous  Top  Next

    
 

 

Данная функция позволяет Вам проверить существование определённого адреса(URL) в интернете. Естественно она может пригодиться веб-мастерам, у которых на сайте много ссылок, и необходимо с определённой периодичнойстью эти ссылки проверять.

 

URL может быть как с префиксом http:/ так и без него - эта функция добавляет префикс http:// если он отсутствует (необходимо для функции internetOpenUrl которая так же поддерживает FTP:// и gopher://

 

Эта функция проверяет только два возвращаемых кода '200'(ОК) или '302' (Редирект), но Вы можете заставить проверять функцию и другие коды. Для этого достаточно модифицировать строчку "result := ".

 

Платформа: Delphi 3.x (или выше)

Code:

uses wininet;

 

function CheckUrl(url: string): boolean;

var

hSession, hfile, hRequest: hInternet;

dwindex, dwcodelen: dword;

dwcode: array[1..20] of char;

res: pchar;

begin

if pos('http://', lowercase(url)) = 0 then

   url := 'http://' + url;

Result := false;

hSession := InternetOpen('InetURL:/1.0',

   INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

if assigned(hsession) then

   begin

     hfile := InternetOpenUrl(

       hsession,

       pchar(url),

       nil,

       0,

       INTERNET_FLAG_RELOAD,

       0);

     dwIndex := 0;

     dwCodeLen := 10;

     HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE,

       @dwcode, dwcodeLen, dwIndex);

     res := pchar(@dwcode);

     result := (res = '200') or (res = '302');

     if assigned(hfile) then

       InternetCloseHandle(hfile);

     InternetCloseHandle(hsession);

   end;

end;

 

 

©Drkb::03576

Взято из http://forum.sources.ru