Rufen Sie den gesamten XML-Antworttext mit dem Guzzle 6 HTTP Client ab

8

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:

%Vor%

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?

%Vor%

Ich würde Ihren Ratschlag schätzen.

    
luqo33 03.08.2015, 09:42
quelle

4 Antworten

9

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.

    
hakre 03.08.2015, 16:07
quelle
3

Ich habe es so gemacht:

%Vor%

Meine Anwendung gibt Inhalt in einer Zeichenfolge mit vorbereitetem XML-Inhalt zurück, und Guzzle-Anforderung sendet Header mit accept param application / xml .

    
Toni 25.02.2016 15:58
quelle
0
%Vor%     
sNICkerssss 03.09.2016 05:56
quelle
0
%Vor%     
sunshine 26.09.2017 08:51
quelle

Tags und Links