我正在编写一个程序来对网站进行检查以测试它们的当前状态,例如 200 OK。我正在使用 Delphi 2010 附带的 Indy HTTP 来完成此任务并拥有当前代码。
procedure TCheckSiteIndividual.Execute;
var
http : TIdhttp;
begin
try
try
http := Tidhttp.create(nil); //Create indy
http.Get(CSiteURL,nil); //Send Request To Check Site
except
on E: EIdHTTPProtocolException do
status := http.ResponseText; // or: code := E.ErrorCode;
end;
status := http.ResponseText; //Return Status of Site
synchronize(updateform); //Update data to form
finally
http.Free;
end;
end;
CSiteURL
变量是在线程构造器中设置的,变量status
是整个线程的变量。
尝试,除了部分代码来自 Remy Lebeau - TeamB here,这是我最初摆弄这个想法时提出的一个问题。我遇到的问题是,此代码仅在站点返回 200 OK 代码时才有效。其他任何事情都会导致异常,包括如果我禁用互联网。这也会导致重定向站点上的异常,例如 www.google.com 在调试期间导致异常我认为它会为我重定向到 www.google.co.uk,但是如果我继续通过异常,那么它会返回一个 301 FOUND 代码没问题。
我正在寻找它的最终结果,它会根据网站是否在线或有错误(例如 HTML 返回代码)给我一个回报,另外在网站不存在时提供反馈(例如未注册的 URL)或者只是联系不上。
我正在寻找的其他建议是关于如何从请求中获取更多信息。具体来说,目前我还希望获得被检查网站的 IP。
让它工作而不需要在任何 URL 之前有 http:// 也很好,因此例如 www.google.com 将工作,但由于未知协议,目前它不能工作。
基本上,如果有人有 IndyHTTP 的一些不错的文档的链接,那就太好了,因为它似乎很稀疏,