用Delphi检测一个url地址是否正确

简介:
    前面在做文件下载的时候,有时会遇到url指定的文件并不存在,所以在下载过程中会出现一些错误,尽管这些错误可以except掉,但还是需事先检测一下,如果url不正确则不用再调用download过程了。下面的函数可以进行检测并函数返回boolean型值:

 1  function TFrameChannel.CheckUrl(url:  string ; TimeOut: Integer  =   5000 ): boolean;
 2  var
 3    hSession, hfile : hInternet;
 4    dwindex, dwcodelen: dword;
 5    dwcode: array[ 1 .. 20 ] of  char ;
 6    res: pchar;
 7    re: integer;
 8    Err1: integer;
 9    j: integer;
10  begin
11     if  pos( ' http:// ' , lowercase(url))  =   0  then
12      url : =   ' http:// '   +  url;
13    Result : =   false ;
14    hSession : =  nil;
15    hFile : =  nil;
16 
17     // 设置超时
18    InternetSetOption(hSession, Internet_OPTION_CONNECT_TIMEOUT, @TimeOut,  4 );
19    hSession : =  InternetOpen( ' Mozilla/4.0 ' , INTERNET_OPEN_TYPE_PRECONFIG, nil, nil,  0 );
20     if  assigned(hsession) then begin
21      j : =   1 ;
22       while   true   do  begin
23        hfile : =  InternetOpenUrl(hsession, pchar(url), nil,  0 , INTERNET_FLAG_RELOAD,  0 );
24         if  hfile  =  nil then begin
25          j : =  j  +   1 ;
26          Err1 : =  GetLastError;
27           if  j  >   5  then  break ;
28           if  (Err1  <>   12002 ) or (Err1  <>   12152 ) then  break ;
29          sleep( 2 );
30        end  else  begin
31           break ;
32        end;
33      end;
34      dwIndex : =   0 ;
35      dwCodeLen : =   10 ;
36      HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
37      res : =  pchar(@dwcode);
38      re : =  strtointdef(res,  404 );
39       case  re of
40         400 .. 450 : result : =   false ;
41       else  result : =   true ;
42      end;
43       if  assigned(hfile) then
44        InternetCloseHandle(hfile);
45      InternetCloseHandle(hsession);
46    end;
47  end;
48 



    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/04/26/728269.html,如需转载请自行联系原作者

相关文章
|
5月前
|
移动开发
钉钉H5微应用配置IP,应用首页地址报错:app url exceeds max length limit,这个怎么处理?
钉钉H5微应用配置IP,应用首页地址报错:app url exceeds max length limit,这个怎么处理?
557 0
|
应用服务中间件 nginx
Nginx rewrite(URL)地址重定向
Nginx rewrite(URL)地址重定向
514 0
|
9天前
|
JSON 前端开发 中间件
React读取properties配置文件转化为json对象并使用在url地址中
本文介绍了如何在React项目中读取properties配置文件,将其内容转化为JSON对象,并在请求URL地址时使用这些配置。文章详细说明了异步读取文件、处理字符串转换为JSON对象的过程,并提供了一个封装函数,用于在发起请求前动态生成配置化的URL地址。
24 1
|
2月前
使用URL方式进行人脸检测
【8月更文挑战第2天】使用URL方式进行人脸检测。
49 3
|
12月前
|
SQL 安全 Java
开启 Kerberos 安全认证的大数据环境中如何正确指定 HS2 的 jdbc url 地址?
开启 Kerberos 安全认证的大数据环境中如何正确指定 HS2 的 jdbc url 地址?
|
5月前
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
【超实用】Angular如何修改当前页面网页浏览器url后面?param1=xxx&param2=xxx参数(多用于通过浏览器地址参数保存用户当前操作状态的需求),实现监听url路由切换、状态变化。
|
5月前
|
小程序 前端开发
获取url地址指定参数值
获取url地址指定参数值
|
5月前
|
XML 安全 搜索推荐
URL地址解析
URL地址解析
104 0
|
5月前
|
JavaScript 前端开发 API
(简单详细)javascript中new url()属性,轻松解析url地址
(简单详细)javascript中new url()属性,轻松解析url地址
480 0
|
11月前
thymeleaf获取url地址跳转时所带参数
thymeleaf获取url地址跳转时所带参数
311 0