TIdHTTP (get und post) scheint seit ein paar Wochen oder länger nicht mehr auf gewissen Systemen zu funktionieren, deswegen würde ich gerne alles zu THTTPClient umschreiben.
Ein Problem habe ich aber. Ich habe eine eigene Klasse
THTTPCustom = class(THttpClient)
mit eigenem Create und Destroy. Ich ich gerne das Get überschreiben, sodass ich String zurück bekomme und nicht erst wieder überall ContentAsString() hinschreiben muss. Wie geht das?
Außerdem würde ich in der eigenen Klasse ein property Response: IHttpResponse; einfügen. Die eigene Get-Funktion setzt dann gleich auch Response.
Der Vorteil ist, dass ich dann alles was ich brauche (String Get-Ergebnis und IHttpResponse Response-Ergebnis) in einer Klasse statt 2.
Mir fällt gerade aber auch auf, dass das hier gar nicht funktioniert und mit einem abstrakten Fehler beendet wird. Nur wieso?
Delphi-Quellcode:
unit HTTPCustom;
interface
uses
System.Net.HttpClient;
type
THTTPCustom =
class(THttpClient)
public
constructor Create;
destructor Destroy;
override;
end;
implementation
constructor THTTPCustom.Create;
begin
inherited Create;
end;
destructor THTTPCustom.Destroy;
begin
inherited Destroy;
end;
// hier würde ich gern noch Get() hinzufügen, wo dann Antwort von Get (IHttpResponse) in eine private Variable HttpResponse geschrieben wird
end.
Delphi-Quellcode:
procedure TForm3.Button2Click(Sender: TObject);
var
HttpClient: THTTPCustom;
HttpResponse: IHttpResponse;
begin
HttpClient := THTTPCustom.Create;
try
HttpResponse := HttpClient.Get('irgendeine txt datei auf irgendeinem server');
finally
HttpClient.Free;
end;
end;