Ich wollte mit Guzzle 6 eine XML-Antwort von einer Remote-API abrufen. Das ist mein Code:
%Vor% Das Vardumping von $body
würde ein Objekt GuzzleHttp\Psr7\Stream
zurückgeben:
Ich könnte dann $body->read(1024)
aufrufen, um 1024 Bytes aus der Antwort zu lesen (die in xml einlesen würde).
Ich möchte jedoch die gesamte XML-Antwort aus meiner Anfrage abrufen, da ich sie später mit der Erweiterung SimpleXML
analysieren muss.
Wie kann ich am besten die XML-Antwort von GuzzleHttp\Psr7\Stream
object abrufen, damit sie für das Parsen geeignet ist?
Würde die while
Schleife den Weg zurücklegen?
Ich würde Ihren Ratschlag schätzen.
Die GuzzleHttp \ Psr7 \ Stream implementiert die Vertrag von Psr \ Http \ Message \ StreamInterface , die Ihnen folgendes anbieten kann:
%Vor% Wenn das Objekt in einen String umgewandelt wird, wird die zugrunde liegende Methode __toString()
aufgerufen, die Teil der Schnittstelle ist. Der Methodenname __toString()
ist speziell in PHP .
Da die Implementierung innerhalb von GuzzleHttp "verpasst" hat, um Zugriff auf das tatsächliche Stream-Handle zu bieten, können Sie die Stream-Funktionen von PHP nicht nutzen, was "stream-lined" ( stream-like ) unter Umständen, wie stream_copy_to_stream
, stream_get_contents
oder file_put_contents
. Dies ist vielleicht auf den ersten Blick nicht offensichtlich.