Abrufen der gesamten XML-Antwort der Körper mit Guzzle HTTP-Client 6
Ich wollte Saufen, 6 rufen Sie eine xml-Antwort von einer remote-API. Das ist mein code:
$client = new Client([
'base_uri' => '<my-data-endpoint>',
]);
$response = $client->get('<URI>', [
'query' => [
'token' => '<my-token>',
],
'headers' => [
'Accept' => 'application/xml'
]
]);
$body = $response->getBody();
Vardumping die $body
zurückkehren würde eine GuzzleHttp\Psr7\Stream
Objekt:
object(GuzzleHttp\Psr7\Stream)[453]
private 'stream' => resource(6, stream)
...
...
Konnte ich dann anrufen $body->read(1024)
zu Lesen 1024 bytes der Antwort (die Lesen in xml).
Möchte ich jedoch, dass das abrufen des gesamten XML-Antwort von meiner Anfrage, da muss ich analysieren Sie später mit der SimpleXML
Erweiterung.
Wie kann ich am besten abrufen der XML-Antwort von GuzzleHttp\Psr7\Stream
Objekt so, dass es nutzbar ist für die Analyse?
Würden die while
Schleife den Weg zu gehen?
while($body->read(1024)) {
...
}
Ich würde schätzen Ihre Beratung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den GuzzleHttp\Psr7\Stream implemtents der Vertrag von Psr\Http\Message\StreamInterface hat Folgendes zu bieten:
Umwandeln des Objekts zu einem string aufrufen, die zugrunde liegenden
__toString()
Methode ist Teil der Schnittstelle. Die name der Methode__toString()
ist das Besondere in PHP.Als die Umsetzung innerhalb GuzzleHttp "verpasst", um Zugang zu den tatsächlichen stream Griff, so dass Sie nicht machen Verwendung von PHP-stream-Funktionen, wodurch mehr "stream-lined" (stream-wie) Operationen unter Umständen, wie
stream_copy_to_stream
,stream_get_contents
oderfile_put_contents
. Dies möglicherweise nicht offensichtlich auf den ersten Blick.Machte ich es so:
Meine Bewerbung zurück-Inhalt in string mit XML-Inhalte vorbereitet, und Saufen Anfrage sendet Header, die mit accept param application/xml.
SimpleXMLElement
wurde nicht gefunden. Sie haben eine einfache Lösung?String could not be parsed as XML