Thema: URL checken

Einzelnen Beitrag anzeigen

Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: URL checken

  Alt 24. Aug 2013, 15:18
Also irgendwas stimmt da nicht.
Ich bekomme immer ein "OK" auch wenn die URL ungültig ist:
Delphi-Quellcode:
function urlcheck(const sUrl: string; CheckTimeout: DWORD = 3000): DWORD;
var
   hInet, hConnect: HINTERNET;
   StatusCode, dummy, bufLen, Option: DWORD;
begin
   Result := 0;
   hInet := InternetOpen(PChar(Application.Title),
     INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0);
   if Assigned(hInet) then
     try
       Option := CheckTimeout;
       InternetSetOption(hInet, INTERNET_OPTION_CONNECT_TIMEOUT, @Option,
         SizeOf(Option));
       InternetSetOption(hInet, INTERNET_OPTION_RECEIVE_TIMEOUT, @Option,
         SizeOf(Option));
       hConnect := InternetOpenUrl(hInet, PChar(trim(sUrl)), nil, 0,
         INTERNET_FLAG_NO_UI, 0);
       if Assigned(hConnect) then
         try
           dummy := 0;
           bufLen := SizeOf(StatusCode);
           if HttpQueryInfo(hConnect, HTTP_QUERY_STATUS_CODE or
             HTTP_QUERY_FLAG_NUMBER, @StatusCode, bufLen, dummy) then
             Result := StatusCode;
         finally
           InternetCloseHandle(hConnect);
         end;
     finally
       InternetCloseHandle(hInet);
     end;
end;

function htcodes(mycode: Integer): string;
begin
   case mycode of
     200: Result := 'OK';
     301: Result := 'Adresse umgezogen';
     400: Result := 'Anfrage fehlerhaft';
     401: Result := 'keine Authentifizierung';
     403: Result := 'keine Berechtigung';
     404: Result := 'Keine Antwort';
     408: Result := 'Timeout';
     else
       Result := 'unbekannter Fehler';
   end;
end;
Aufruf:
Delphi-Quellcode:
procedure Tmain.testbuttonClick(Sender: TObject);
var stc: Integer;
begin
 stc:=urlcheck(urltext.Text);
 Showmessage(htcodes(stc));
end;
Theoretisch gibt es also immer eine 200 zurück.
Mache ich was falsch?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat