![]() |
HTTP_QUERY_LOCATION gibt leeren String aus
Guten Abend alle zusammen.
Ich hab eine Funktion die überprüft ob eine URL existiert und mit die exakte URL zurückgibt (im fall einer weiterleitung). Leider ist der wert immer leer. Woran kann der fehler liegen ?
Delphi-Quellcode:
var
hSession, hfile: hInternet; infoBuffer: array [0..512] of char; infoBuffer2: array [0..512] of char; dummy: DWORD; bufLen: DWORD;
Delphi-Quellcode:
Danke für die Hilfe.
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_NO_UI,0); {Get Validation} dummy := 0; bufLen := Length(infoBuffer); HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @infoBuffer[0], bufLen, dummy); result := (infoBuffer ='200') or (infoBuffer ='302'); if result then begin {Get Link} dummy := 0; bufLen := Length(infoBuffer2); HttpQueryInfo(hfile, HTTP_QUERY_LOCATION, @infoBuffer2, bufLen, dummy); URL := infoBuffer2; End; if assigned(hfile) then InternetCloseHandle(hfile); InternetCloseHandle(hsession); end; |
AW: HTTP_QUERY_LOCATION gibt leeren String aus
Hallo,
wenn ich es richtig verstehe, dann möchtest Du im Falle, dass die angeforderte URL weiterleitet, die Adresse, an die weitergeleitet wird, ermitteln. Wenn dem so ist, dann musst Du das Weiterleiten unterbinden, ansonsten bekommst Du die Headerdaten, die der umgeleitete Webserver sendet (da steht aber meist keine URI drin). Versuchs mal mit:
Delphi-Quellcode:
hfile := InternetOpenUrl (hsession, PChar (url), nil, 0, INTERNET_FLAG_NO_AUTO_REDIRECT, 0);
Gruß |
AW: HTTP_QUERY_LOCATION gibt leeren String aus
Volker,
jetzt klappt alles wie es soll. Hier ist die neue funktion. Ich musste auch der Errorcode 301 der anscheinend bei einem redirekt auftritt...
Delphi-Quellcode:
hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if assigned(hsession) then begin repeat hfile := InternetOpenUrl (hsession, PChar (url), nil, 0, INTERNET_FLAG_NO_AUTO_REDIRECT, 0); {Get Validation} Buflen := 512; Dummy := 0; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @infoBuffer[0], Buflen, Dummy); result := (infoBuffer ='200') or (infoBuffer ='301') or (infoBuffer ='302'); if result then begin {Get Link} Buflen := sizeof(infoBuffer2); Dummy := 0; HttpQueryInfo(hfile, HTTP_QUERY_LOCATION, @infoBuffer2[0], Buflen, Dummy); Str1 := infoBuffer2; if Str1 = url then Str1 := ''; if Str1 <> '' then url := Str1; End; if assigned(hfile) then InternetCloseHandle(hfile); until (result = False) OR (Str1 = ''); InternetCloseHandle(hsession); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz