TsgcHTTP3Client › Methoden › Query

Query Methode

Sendet eine synchrone HTTP/3-QUERY-Anfrage, ein sicheres und idempotentes Verb, das einen Anfrage-Body überträgt.

Syntax

Query(const aURL, aData: string; const aContentType: string): string String-Überladung

function Query(const aURL: string; const aData: string;

  const aContentType: string = 'application/x-www-form-urlencoded'): string; overload;
NameTypBeschreibung
aURLconst stringAbsolute URL der Zielressource.
aDataconst stringAnfrage-Body. Er wird vor dem Senden im HTTP/3-DATA-Frame als UTF-8 kodiert.
aContentTypeconst stringWert des content-type-Anfrage-Headers. Standardwert ist application/x-www-form-urlencoded.

Vom Server empfangener Antworttext, als String dekodiert. (string)

Query(const aURL: string; const aSource, aResponseContent: TStream) Stream-Überladung

procedure Query(const aURL: string; const aSource: TStream;

  const aResponseContent: TStream); overload;
NameTypBeschreibung
aURLconst stringAbsolute URL der Zielressource.
aSourceTStreamStream, der vollständig ab Position 0 gelesen und als Request-Body gesendet wird. Darf nil sein, um einen leeren Body zu senden.
aResponseContentTStreamStream, der den Antwort-Body empfängt.

Keine. Der Antwort-Body wird nach aResponseContent geschrieben.

Hinweise

Der Aufruf blockiert den aufrufenden Thread, bis die vollständige Antwort empfangen wurde. Wenn der Client noch nicht verbunden ist, wird die URL verwendet, um zuerst die QUIC-Verbindung zu öffnen. Für eine nicht-blockierende Anfrage verwenden Sie QueryAsync, das die Antwort über OnResponse zustellt.

QUERY ist die HTTP-QUERY-Methode der IETF. Sie verhält sich wie Get, insofern sie sicher und idempotent ist und den Server nur nach Daten fragt, aber anders als GET führt sie einen Anfrage-Body mit. Das macht sie zum richtigen Verb für Such- und Filteroperationen, deren Kriterien zu groß oder zu stark strukturiert sind, um in eine Query-Zeichenfolge zu passen, und die andernfalls auf Post ausweichen müssten und ihre Cachefähigkeit verlören.

Die String-Überladung kodiert aData als UTF-8 und setzt aContentType standardmäßig auf application/x-www-form-urlencoded. Die Stream-Überladung sendet immer content-type: application/octet-stream. Sie akzeptiert keinen aContentType-Parameter, verwenden Sie daher die String-Überladung, wenn der Server einen bestimmten Medientyp verlangt.

QUERY ist eine neuere Ergänzung von HTTP, vergewissern Sie sich daher, dass der Zielserver sie implementiert, bevor Sie sich darauf verlassen. Ein Server, der die Methode nicht kennt, antwortet normalerweise mit 405 Method Not Allowed oder 501 Not Implemented.

Beispiel



vBody := '{"filter": {"city": "Madrid"}}';

vResponse := oClient.Query('https://api.example.com/v1/search', vBody,

  'application/json');

Zurück zu Methoden