Правильный способ отправки (POST) xml с жрать 6

Хочу выполнить пост с жужжанием, отправив xml файл. Я не нашел примера.

На данный момент я сделал следующее:

$xml2=simplexml_load_string($xml) or die("Error: Cannot create object");
use    GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
//
$request = new Request('POST', $uri, [ 'body'=>$xml]);
$response = $client->send($request);
 //
//$code = $response->getStatusCode(); // 200
//$reason = $response->getReasonPhrase(); // OK
 //
 echo $response->getBody();

Независимо от того, что я пытаюсь, я получаю сообщение об ошибке -1, что означает, что xml недействителен. XML, который я отправляю, проходит онлайн-проверку и действителен% 100

Пожалуйста помоги.


person user3485417    schedule 11.01.2016    source источник


Ответы (5)


После некоторых экспериментов разобрался. Вот мое решение на случай, если кто-то зайдет в тупик.

$request = new Request(
    'POST', 
    $uri,
    ['Content-Type' => 'text/xml; charset=UTF8'],
    $xml
);
person user3485417    schedule 12.01.2016

Вот что у меня сработало на Guzzle 6:

// configure options
$options = [
    'headers' => [
        'Content-Type' => 'text/xml; charset=UTF8',
    ],
    'body' => $xml,
];

$response = $client->request('POST', $url, $options);
person Abdullah Aman    schedule 02.06.2017

Если вы хотите отправить xml с помощью метода post, вот пример:

$guzzle->post($url, ['body' => $xmlContent]);
person Shaolin    schedule 24.10.2016

Вы можете сделать это следующим образом

$xml_body = 'Your xml body';
$request_uri = 'your uri'
$client = new Client();
$response = $client->request('POST', $request_uri, [
              'headers' => [
                 'Content-Type' => 'text/xml'
               ],
              'body'   => $xml_body
            ]);
person user3785966    schedule 09.08.2019

Попробуйте опубликовать такие данные:

$xml2=simplexml_load_string($xml) or die("Error: Cannot create object");
use    GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
//
$request = new Request('POST', $uri, [
'form_params' => [
        'xml' => $xml,
    ]
]);
$response = $client->send($request);
//$code = $response->getStatusCode(); // 200
//$reason = $response->getReasonPhrase(); // OK
echo $response->getBody();
person Borche Bojcheski    schedule 11.01.2016
comment
Спасибо за предложение, но оно не работает. Опять тот же ответ. Есть ли документация, подробно описывающая объект опций? - person user3485417; 12.01.2016