Hallo nochmal,
hier zwei neue Samples die auch HTTPS Unterstützen, diesmal sollte nichts schiefgehen, aber mal abwarten was so kommt
Delphi-Quellcode:
Uses WinInet;
function GetUrlContent(
const Url:
string): UTF8String;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer:
array[0..1023]
of byte;
BytesRead: dWord;
StrBuffer: UTF8String;
begin
Result := '
';
NetHandle := InternetOpen('
Delphi-PRAXiS RockZ', INTERNET_OPEN_TYPE_PRECONFIG,
nil,
nil, 0);
if Assigned(NetHandle)
then
try
UrlHandle := InternetOpenUrl(NetHandle, PChar(
Url),
nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle)
then
try
repeat
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
SetString(StrBuffer, PAnsiChar(@Buffer[0]), BytesRead);
Result := Result + StrBuffer;
until BytesRead = 0;
finally
InternetCloseHandle(UrlHandle);
end
else
raise Exception.CreateFmt('
Cannot open URL %s', [
Url]);
finally
InternetCloseHandle(NetHandle);
end
else
raise Exception.Create('
Unable to initialize Wininet');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
temp1, temp2:
String;
i : Integer;
begin
Memo1.Clear;
Temp1 := '
'; Temp2 := '
';
Memo1.Lines.Add('
Downloading Data from ' +Edit1.Text);
Memo1.Lines.Add('
Please Wait...');
Temp1 := Edit1.Text;
if Length(Temp1) > 0
then Temp2 := GetUrlContent(Temp1);
Memo1.Lines.Text := Temp2;
i := Length(Memo1.Lines.Text) ;
Memo1.Lines.Add('
HTTP/S HTML Source from: '+Temp1);
Memo1.Lines.Add('
Downloaded: '+IntToStr(Length(Temp2)) +'
bytes, displaying: ' +IntToStr(i)+ '
chars. ' +IntToStr(Length(Temp2)-i)+ '
bytes are different!');
end;
Und hier die
WinApi Variante, sollte auch HTTPS tauglich sein.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
http: variant;
temp1, temp2:
String;
i : Integer;
begin
Memo1.Clear;
Temp1 := '
'; Temp2 := '
';
Memo1.Lines.Add('
Downloading Data from ' +Edit1.Text);
Memo1.Lines.Add('
Please Wait...');
Temp1 := Edit1.Text;
http:=createoleobject('
WinHttp.WinHttpRequest.5.1');
http.open('
GET', Temp1, false);
http.send;
Temp2 := http.responsetext;
Memo1.Lines.Text := Temp2;
i := Length(Memo1.Lines.Text) ;
Memo1.Lines.Add('
HTTP/S HTML Source from: '+Temp1);
Memo1.Lines.Add('
Downloaded: '+IntToStr(Length(Temp2)) +'
bytes, displaying: ' +IntToStr(i)+ '
chars. ' +IntToStr(Length(Temp2)-i)+ '
bytes are different!');
end;
Total Oldschool way, ich hoffe es gefällt Dir und löst Dein Problem!
Hier der
link zur Quelle.
Falls "Nullen" zum Problem werden, schau in den anderen Code und passe das so an.
edit
PS: Und es tut mir leid das ich am Titel-Thema mehr als vorbeigerauscht sein sollte (beide Samples benötigen kein
Indy und beide Samples enthalten keinen MemoryStream)
PPS: Hier ein HTTPS Ergebnis
Zitat: