Форум: "Сети";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
ВнизПроверка существования URL Найти похожие ветки
← →
Matrex (2007-10-16 20:42) [0]Коллеги... Нужно ваше мнение. Для проверки существования URL пользуюсь следующей функцией (см. ниже). Все вроде бы ничего, но такое ощущение, что эта процедура, прежде чем проверить есть ли URL пытается его сначала выкачать… Для примера проверка 30 ссылок на архивы потянула трафика примерно на 15 мегов. Может, есть альтернативная функция? Или может где ни будь закралась ошибка в коде? А может так надо?
function TCheckUrl.CheckUrls(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) and (pos("ftp://", 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;
← →
umbra © (2007-10-17 15:33) [1]
InternetOpenUrl
пытается именно скачать ресурс. Вместо нее надо использоватьHttpOpenRequest
,HttpSendRequest
, проверять код ответа и сразу же закрывать соединение, не вызываяInternetReadFile
. Траффик все равно будет, но гораздо меньше.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c