あるURLを用意し、それがちゃんと存在するURL(リンク先があるのか)なのかを調べたいのですが出来ません。
コンポーネントは特に問いませんので、やり方があればぜひ教えていただきたい次第です。
こんな感じでしょうか。
uses wininet;を追加してください。
キャッシュが残っているとうまく判別できないかも。
function ExistsUrl(const Url: String): Boolean;
var
hInet, hFile: HINTERNET;
begin
hInet := InternetOpen('WinInet',
INTERNET_OPEN_TYPE_PRECONFIG,
nil,
nil,
0);
hFile := InternetOpenUrl(
hInet,
PCHAR(Url),
nil,
0,
INTERNET_FLAG_RELOAD,
0);
Result := (hFile <> nil);
InternetCloseHandle(hFile);
InternetCloseHandle(hInet);
end;
function ExistURL(URLString : string) : boolean;
var vIdHTTP : TIdHTTP;
begin
// Delphi付属のindy コンポーネント
Result := False;
vIdHTTP := TIdHTTP.Create;
try
try
vIdHTTP.Head(URLString);
Result := True;
except
on EIdUnknownProtocol do
begin
// 不明なプロトコル
end;
on EIdHTTPProtocolException do
begin
// ファイルがない
end;
else
begin
// なんだろうね
end;
end;
finally
vIdHTTP.Free;
end;
end;
ツイート | ![]() |