Не удается повторить ответ guzzle xml GuzzleHttp \ Psr7 \ Response :: xml ()

Используя laravel 5.2, я попробовал следующий код:

$xml =
"<BALANCE>
<Userid>myuserid</Userid>
<Loginkey>myloginkey</Loginkey>
<Transactionid>mytransactionid</Transactionid>
</BALANCE>";

$request = $client->request('POST', 'serveraddress:serverport/servicename/webservice.php',['Content-Type' => 'text/xml; charset=UTF8'],$xml);

var_dump($request->getBody());

И получаю такой ответ:

объект (GuzzleHttp \ Psr7 \ Stream) # 171 (7) {["stream": "GuzzleHttp \ Psr7 \ Stream": private] => ресурс (231) типа (stream) ["size": "GuzzleHttp \ Psr7 \ Stream ": private] => NULL [" seekable ":" GuzzleHttp \ Psr7 \ Stream ": private] => bool (true) [" readable ":" GuzzleHttp \ Psr7 \ Stream ": private] => bool (true) ["Writable": "GuzzleHttp \ Psr7 \ Stream": private] => bool (true) ["uri": "GuzzleHttp \ Psr7 \ Stream": private] => string (10) "php: // temp" [ "customMetadata": "GuzzleHttp \ Psr7 \ Stream": private] => array (0) {}}

По словам провайдера, запрос и ответ на сервере в порядке.

Как я могу использовать ответ в формате xml? Другими словами, как я могу использовать объект или поток psr7, чтобы отображать значимую информацию?

Ответы, которые я прочитал, которые мне «пока» не помогли (либо не знаю, что делать с предоставленной информацией, либо информация не применима к моей ситуации);

  1. https://stackoverflow.com/a/32512634/3664960 -> Я использую 6 и не знаю если ответ предполагает переход на старую версию
  2. https://stackoverflow.com/a/30549372/3664960 при использовании первого варианта помещения string впереди результат

строка (1) ""

  1. https://stackoverflow.com/a/37258804/3664960 -> json_decode

НУЛЕВОЙ

  1. https://stackoverflow.com/a/31791933/3664960

строка (1) ""

5. https://stackoverflow.com/a/35632231/3664960

Смотрите мои комментарии в комментариях


Что еще можно попробовать?


Заметка:

Я могу читать заголовки и правильно их отображать!


person davejal    schedule 30.07.2016    source источник


Ответы (1)


Я думаю, вы просто получаете пустой ответ от сервера. Потому что ваш запрос неверен.

Попробуй это

$request = $client->request(
    'POST',
    'serveraddress:serverport/servicename/webservice.php',
    [
        'headers' => ['Content-Type' => 'text/xml; charset=UTF8'],
        'body' => $xml
    ]
);

вместо исходного запроса.

Обратите внимание на варианты. Client::request() не имеет четвертого параметра для тела, его следует передавать как параметр.

person Alexey Shokov    schedule 01.08.2016