![]() |
URL wininet ermitteln
Hallo,
ich lade mir mit wininet-Funktionen etwas aus dem Internet herunter... Ich verwende ![]() Nun könnte man denken, ich kann mir einfach die URL, die ich ja auch als Parameter angebe, nehmen. Dem ist aber nicht so, da ich weitergeleitet werde - ich brauche dann die andere URL. Also
Code:
ich werde auf die Seite "http://xyz.de/seite2.html" weitergeleitet und bekomme mit DownloadFile auch korrekterweise den Inhalt der neuen Seite, was ich gut finde.
DownloadFile('http://xyz.de/abc.html')
Allerdings "weiß" ich ja nicht, dass ich jetzt eigentlich auf "http://xyz.de/seite2.html" bin. Trotzdem erhalte ich dessen Inhalt. Wie kriege ich sowas wie im Beispiel http://xyz.de/seite2.html" genannt heraus ? Vielen Dank, Pascal |
AW: URL wininet ermitteln
Die folgenden Einträge in der MSDN könnten dir weiterhelfen:
![]() ![]() ![]() Deine prinzipielle Vorgehensweise sollte diese sein:
Das sollte funktionieren. Bedenke bitte, dass ich das nicht getestet, sondern nur an Hand der verlinkten Dokumentation hergeleitet habe. Gruß, Sven |
AW: URL wininet ermitteln
Hallo,
vielen Dank für deine Antwort! Ich halte die Idee für sehr gut. Momentan erhalte ich mit ausgeschalteter Redirection einen 302. Laut ![]() Ich werde mich nochmal melden. Pascal |
AW: URL wininet ermitteln
Ich habe es geschafft !
:-D Ohne Deine Hilfe hätte ich das nicht geschafft ! Als Dank dafür veröffentliche ich den Code, um die Weiterleitungs-URL herauszufinden:
Delphi-Quellcode:
Hoffentlich kann jemand das gebrauchen !
function GetRedirection(const Url: string): string;
var hInet: HINTERNET; hConnect: HINTERNET; infoBuffer: array [0..512] of char; dummy: DWORD; bufLen: DWORD; okay: longbool; reply: string; begin Result := '?'; hInet := InternetOpen(PChar('a browser...'), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); hConnect := InternetOpenUrl(hInet, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD + INTERNET_FLAG_NO_AUTO_REDIRECT, 0); if not Assigned(hConnect) then Exit else begin dummy := 0; bufLen := Length(infoBuffer); okay := HttpQueryInfo(hConnect, HTTP_QUERY_STATUS_CODE, @infoBuffer[0], bufLen, dummy); if not okay then Exit else begin reply := infoBuffer; if (reply = '301') or (reply = '302') then begin dummy := 0; bufLen := Length(infoBuffer); okay := HttpQueryInfo(hConnect, HTTP_QUERY_LOCATION, @infoBuffer[0], bufLen, dummy); if not okay then Exit else begin reply := infoBuffer; if reply <> '' then Result := reply; end; end else Exit; end; InternetCloseHandle(hConnect); end; InternetCloseHandle(hInet); end; Nochmals vielen Dank, liebe Grüße, Pascal |
AW: URL wininet ermitteln
Zitat:
Eine Frage habe ich jedoch:
Delphi-Quellcode:
Ist
var
hConnect: HINTERNET; begin ... if not Assigned(hConnect) then Exit else ... end;
Delphi-Quellcode:
als Zeiger definiert? Ansonsten ist
HINTERNET
Delphi-Quellcode:
falsch und du solltest stattdessen auf 0 überprüfen.
Assigned
Gruß, Sven |
AW: URL wininet ermitteln
Ja,
in der wininet.pp:
Delphi-Quellcode:
und in der base.inc:
type
HINTERNET = LPVOID;
Delphi-Quellcode:
Hoffe, dass das passt ;)
type
... LPVOID = pointer; Pascal |
AW: URL wininet ermitteln
Zitat:
Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 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