Heim >Backend-Entwicklung >PHP-Tutorial >Wie erhält man effizient Körperinhalte aus einer Guzzle 6 PSR-7-Reaktion?

Wie erhält man effizient Körperinhalte aus einer Guzzle 6 PSR-7-Reaktion?

DDD
DDDOriginal
2024-11-30 20:34:17716Durchsuche

How to Efficiently Get Body Contents from a Guzzle 6 PSR-7 Response?

Körperinhalte aus einer PSR-7-Antwort in Guzzle 6 ermitteln

In Guzzle 6 entsprechen die Antworten dem PSR-7-Standard, der verwendet Streams zum Speichern von Antworttexten. Um den Körperinhalt abzurufen, muss man den Stream abrufen und anschließend seinen Inhalt abrufen.

Methoden zum Abrufen des Körperinhalts:

  • Casting zu String:

    $contents = (string) $response->getBody();
  • getContents():

    $contents = $response->getBody()->getContents();

Unterschied zwischen getContents() und Casting:

getContents() gibt das zurück verbleibende Stream-Inhalte. Nachfolgende Aufrufe von getContents() geben eine leere Zeichenfolge zurück, sofern die Stream-Position nicht zurückgesetzt wird. Beim Casting hingegen werden alle Stream-Daten vom Anfang bis zum Ende gelesen.

Beispiel:

$stream = $response->getBody();
$contents = $stream->getContents(); // contents are retrieved
$contents = $stream->getContents(); // returns empty string
$stream->rewind(); // seek the stream back to the beginning
$contents = $stream->getContents(); // contents are retrieved again

Beim Casting in einen String wird ein einzelner Lesevorgang durchgeführt und gibt alle Daten aus dem zurück Stream.

$contents = (string) $response->getBody(); // contents are retrieved
$contents = (string) $response->getBody(); // contents are retrieved again

Dokumentation:

  • https://docs.guzzlephp.org/en/latest/psr7.html#responses

Das obige ist der detaillierte Inhalt vonWie erhält man effizient Körperinhalte aus einer Guzzle 6 PSR-7-Reaktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn