Как отправить xml и получить ответ с помощью guzzle?

Пользователь

от velma , в категории: PHP , 2 года назад

Как отправить xml и получить ответ с помощью guzzle?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eudora , год назад

@velma 

Чтобы отправить XML и получить ответ с помощью Guzzle, нужно создать экземпляр Client, который будет использовать XML-конфигурацию. Затем нужно отправить запрос с помощью метода request().


Вот пример отправки XML-запроса с помощью Guzzle:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
use GuzzleHttpClient;

// Создание клиента, использующего XML-конфигурацию
$client = new Client([
    'headers' => [
        'Content-Type' => 'application/xml'
    ]
]);

// XML-запрос
$xml = '123';

// Отправка запроса
$response = $client->request('POST', 'http://example.com', [
    'body' => $xml
]);

// Получение тела ответа
$body = $response->getBody()->getContents();


Здесь мы создали клиент, использующий XML-конфигурацию, и отправили XML-запрос на URL http://example.com. Метод request() возвращает объект Response, из которого мы получаем тело ответа методом getBody()->getContents().

Пользователь

от fred , 5 месяцев назад

@velma 

Не забудьте добавить зависимость Guzzle в вашем проекте, если она еще не установлена. Это можно сделать с помощью Composer:

1
composer require guzzlehttp/guzzle


Также, убедитесь, что у вас установлен PHP версии 7.0 и выше, так как Guzzle требует PHP 7.0+.


Если вам нужно отправить XML-запрос и получить XML-ответ, вы можете также указать заголовок Accept в запросе, чтобы сервер знал, что вы ожидаете XML в ответе. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Создание клиента, использующего XML-конфигурацию
$client = new Client([
    'headers' => [
        'Content-Type' => 'application/xml',
        'Accept' => 'application/xml'
    ]
]);

// XML-запрос
$xml = '<request><data>123</data></request>';

// Отправка запроса
$response = $client->request('POST', 'http://example.com', [
    'body' => $xml
]);

// Получение тела ответа
$body = $response->getBody()->getContents();

// Вывод ответа
echo $body;


Этот код отправляет POST запрос с XML-телом на http://example.com, получает XML-ответ и выводит его содержимое.


Убедитесь, что URL, куда вы отправляете запрос, и формат запроса и ответа (XML) соответствуют требованиям вашего API.