1.如我有一个URL列表(假设拼写都是正确的),怎样检查一个URL是否存在?如是否有该网页文件,或是否存在该服务器,有没有较好的方法进行检查?2.同理,如果列表是EMail地址(假设拼写都是正确的),又该如何检查呢?

解决方案 »

  1.   

    http://blog.csdn.net/songfuqiang/archive/2007/07/04/1678462.aspx
    检查一个 URL 是否有效函数
      

  2.   

    貌似有个 InternetOpen的函数可用于判断。
      

  3.   

    检测EMAIL比较难
    没有办法直接从返回的消息当中获得EMAIL是否存在的信息
      

  4.   

    这个函数将会检查URL是否有效。唯一的先决条件就是你必须在线。
      URL前可能有 http:// 前缀,却省情况也是 http:// 作前缀,函数 
    internetOpenUrl 对 FTP:// 和 gopher:// 前缀均提供支持。
      例子中我检查返回代码是否为 '200' 和 '302'(重定位标记),
    你也可以按你的需要修改返回码. 仅修改 the result := 表达式 这句即可.
      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; 
      

  5.   

    第一个访问下就可以了可以用HEAD请求. 数据量 也不大.至于email你可以发一封空邮件,看看会不会被退.时效性比较低.
      

  6.   


    沒什麼好辦法,不然早就有人用了。
    如果都是POP的服務器還在存那倒好辦了,就怕存在的服務器,無此用戶。  返回這個錯誤可能是一天,二天這個效率太低了。只能做到部分檢查。 比如提取域名檢查主機是否存在。格式合法,至於用戶是否存在,難。
      

  7.   

    aawwmate 兄的函数与bdmh 提供连接页面内的函数1相同,经试验:bdmh的方法2的函数优于方法1的,方法1不够准确,例如URL是:http://www.google.cn/search?hl=zh-CN&q=delphi&meta=&aq=f&oq=
    方法是检测不到的,方法2可以,具体还要多选一些URL试试不知检测Email有没有可行的方法?
      

  8.   

    email检测的效率太低了,不好实现啊!