Chciałem użyć Guzzle 6, aby pobrać odpowiedź xml ze zdalnego interfejsu API. To jest mój kod:Pobierz całą treść odpowiedzi XML za pomocą klienta HTTP Guzzle 6
$client = new Client([
'base_uri' => '<my-data-endpoint>',
]);
$response = $client->get('<URI>', [
'query' => [
'token' => '<my-token>',
],
'headers' => [
'Accept' => 'application/xml'
]
]);
$body = $response->getBody();
Vardumping $body
zwróci GuzzleHttp\Psr7\Stream
obiektu:
object(GuzzleHttp\Psr7\Stream)[453]
private 'stream' => resource(6, stream)
...
...
mogłem wtedy zadzwonić $body->read(1024)
czytać 1024 bajtów z odpowiedzi (co czytać w XML).
Chciałbym jednak pobrać całą odpowiedź XML z mojego żądania, ponieważ będę musiał przetworzyć ją później przy użyciu rozszerzenia SimpleXML
.
Jak najlepiej pobrać odpowiedź XML z obiektu GuzzleHttp\Psr7\Stream
, aby można ją było wykorzystać do analizowania?
Czy linia while
będzie w pętli?
while($body->read(1024)) {
...
}
Doceniam twoją radę.
Dziękuję sir! Nie myślałem o rzuceniu całego ciała odpowiedzi na ciąg. – luqo33
Mam do czynienia z tym samym problemem. Czy mógłbyś rozwinąć swoją odpowiedź z krok po kroku? Jak wyglądałby teraz cały kod? – davejal