AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Keine "CheckURL" - Funktion in der DP zu finden ?!
Thema durchsuchen
Ansicht
Themen-Optionen

Keine "CheckURL" - Funktion in der DP zu finden ?!

Ein Thema von turboPASCAL · begonnen am 8. Nov 2009 · letzter Beitrag vom 25. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

Keine "CheckURL" - Funktion in der DP zu finden ?!

  Alt 8. Nov 2009, 15:19
Hi,

Das gibts doch nicht, ich finde keine "CheckURL" - Funktion in der DP.

Habe jetzt bestimmt 20 min in der DP gesucht, umd dann doch selbst eine gebastelt.

Kurzversion:
Delphi-Quellcode:
// Windows API - Internet

uses WinINet;

function CheckUrl(url: string; const AutoAddHTMLID: Boolean = True): boolean;
var
  hInet: HINTERNET;
  hConnect: HINTERNET;
  infoBuffer: array [0..512] of char;
  d, bufLen: DWORD;
  nInfo: integer;
begin
  Result := False;
  if url <> 'then
  begin
    if AutoAddHTMLID then
      if pos('http://', AnsiLowerCase(url)) = 0 then url := 'http://' + url;

    hInet := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0);
    if ASSIGNED(hInet) then
    begin
      hConnect := InternetOpenUrl(hInet, PChar(url), nil, 0, INTERNET_FLAG_EXISTING_CONNECT, 0);
      if ASSIGNED(hConnect) then
      begin
        d := 0;
        bufLen := length(infoBuffer);
        ZeroMemory(@infoBuffer, length(infoBuffer));
        if HttpQueryInfo(hConnect,HTTP_QUERY_STATUS_CODE, @infoBuffer[0], bufLen, d) then
        begin
          if infoBuffer = '200then Result := True // File exists
          { Val(infoBuffer, nInfo, d); // genauere Auswertung
          if d = 0 then
          begin
            case nInfo of
              401: not authorised, page exists
              404: no file
              500: Internal server error.
              else unbekannter fehler
            end;
          end else Fehler bei nInfo  }

        end;
        InternetCloseHandle(hConnect);
      end;
    end;
    InternetCloseHandle(hInet);
  end;
end;
//add:
oder mit einer genaueren Auswertung:
Delphi-Quellcode:
function CheckUrl(url: string; var ErrInfo: string; const AutoAddHTMLID: Boolean = True): boolean;
var
  hInet: HINTERNET;
  hConnect: HINTERNET;
  infoBuffer: array [0..512] of char;
  d, bufLen: DWORD;
  nInfo, e: integer;
begin
  Result := False;
  if url <> 'then
  begin
    if AutoAddHTMLID then
      if pos('http://', AnsiLowerCase(url)) = 0 then url := 'http://' + url;

    hInet := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0);
    if ASSIGNED(hInet) then
    begin
      hConnect := InternetOpenUrl(hInet, PChar(url), nil, 0, INTERNET_FLAG_EXISTING_CONNECT, 0);
      if ASSIGNED(hConnect) then
      begin
        d := 0;
        bufLen := length(infoBuffer);
        ZeroMemory(@infoBuffer, length(infoBuffer));
        if HttpQueryInfo(hConnect,HTTP_QUERY_STATUS_CODE, @infoBuffer[0], bufLen, d) then
        begin
          if infoBuffer = '200then Result := True;
          Val(infoBuffer, nInfo, e);
          if e = 0 then
          begin
            case nInfo of
              200: ErrInfo := 'ok, file exists';
              401: ErrInfo := 'not authorised, page exists';
              404: ErrInfo := 'no file';
              500: ErrInfo := 'Internal server error';
              else ErrInfo := 'undef. error (1)';
            end;
          end else ErrInfo := 'undef. error (2)';
        end else
          ErrInfo := 'offline or no internet connection';
        InternetCloseHandle(hConnect);
      end else
        ErrInfo := 'error, connection fails. (InternetOpenUrl fail)';
    end else
      ErrInfo := 'error (InternetOpen fail)';
    InternetCloseHandle(hInet);
  end else
    ErrInfo := 'URL is empty';
end;

PS.: i weis ned wohie der beitrag soll und mache ggf. somit den mods eine lange weile kürzer.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Kein "CheckURL" - Funktion in der DP zu finden

  Alt 8. Nov 2009, 15:22
ich würde einen anderen Rückgabewert bevorzugen. Denn CheckUrl sagt nicht eindeutig aus wann es true und wann false ist. Zum Beispiel wäre temporäry moved aus sicht vieler auch ein Grund True als Rückgabe zu erwarten für andere wäre ein False hingegen der erwartete Rückgabewert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
8. Nov 2009, 15:22
Dieses Thema wurde von "Matze" von "Klatsch und Tratsch" nach "Neuen Beitrag zur Code-Library hinzufügen" verschoben.
Ich denke, das passt hier ganz gut hin.
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Kein "CheckURL" - Funktion in der DP zu finden

  Alt 8. Nov 2009, 16:07
Zitat von SirThornberry:
ich würde einen anderen Rückgabewert bevorzugen.
Ja, ich habe es halt passen für mein Programm geschrieben.
Eine genauere Auswertung der Rückgabewerte kann man ja noch einbauen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: Keine "CheckURL" - Funktion in der DP zu finde

  Alt 23. Jan 2010, 12:08
Hi!

Dazu hätte ich eine Anmerkung:
401: ErrInfo := 'not authorised, page exists'; Bist du dir sicher, dass das so richtig ist? Ich denke, das hier wäre ein Gegenbsp:
www.server.de/private ist ein geschützter Ordner.
Ich versuche auf www.server.de/private/gibt_es_nicht.ext zuzugreifen, kann mich aber nicht authorisieren - dann bekomme ich einen 401 zurück, obwohl die Datei nicht existiert.


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Keine "CheckURL" - Funktion in der DP zu finde

  Alt 23. Jan 2010, 12:11
Hallo,

bei W3C gibt es die Liste der Status-Codes.

401 = Unauthorized
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: Keine "CheckURL" - Funktion in der DP zu finde

  Alt 23. Jan 2010, 12:12
Hi!

Ja, das ist klar.
Ich denke nur, dass der Zusatz "page exists" falsch ist.


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Keine "CheckURL" - Funktion in der DP zu finde

  Alt 23. Jan 2010, 12:39
Ja, der ist falsch. Da hast du Recht. 401 bedeutet eben nur "Unauthorized". Matti hat da zu viel hinein interpretiert.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Keine "CheckURL" - Funktion in der DP zu finde

  Alt 23. Jan 2010, 14:38
jaja.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: Keine "CheckURL" - Funktion in der DP zu finde

  Alt 23. Jan 2010, 14:42
Hi!

Gut, stellt sich mir nur noch eine Frage:
Wird hier die URL auf korrekte Form geprüft oder wird auch geprüft, ob der Server existiert / erreichbar ist?

Edit:
Oh man, wenn ich die Frage jetzt nochmal so lese und nachdenke, muss ich mir an den Kopf fassen
Vergesst es einfach...


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz