XML-запросы SOAP в PHP: подробное руководство

SOAP (простой протокол доступа к объектам) — широко используемый протокол для обмена структурированной информацией в веб-сервисах. В PHP обработка XML-запросов SOAP является обычной задачей интеграции с различными веб-сервисами. В этой статье мы рассмотрим несколько методов выполнения XML-запросов SOAP в PHP, а также приведем примеры кода, демонстрирующие их использование.

  1. Использование расширения SOAP:
    PHP предоставляет встроенное расширение SOAP, которое позволяет создавать клиенты SOAP и отправлять запросы. Вот пример:
$client = new SoapClient('http://example.com/soap.wsdl');
$response = $client->SomeFunction(['param1' => 'value1', 'param2' => 'value2']);
  1. Использование библиотеки cURL:
    Если расширение SOAP недоступно, вы можете использовать cURL для отправки XML-запросов SOAP. Вот пример:
$soapRequest = '<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <SomeFunction xmlns="http://example.com/">
                <param1>value1</param1>
                <param2>value2</param2>
            </SomeFunction>
        </soap:Body>
    </soap:Envelope>';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com/soap');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $soapRequest);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
  1. Использование HTTP-клиента Guzzle:
    Guzzle — это популярная клиентская библиотека HTTP на PHP, которую можно использовать для выполнения XML-запросов SOAP. Вот пример:
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
$request = new Request('POST', 'http://example.com/soap', [], $soapRequest);
$response = $client->send($request)->getBody()->getContents();
  1. Использование библиотеки NuSOAP:
    NuSOAP — это библиотека PHP, специально разработанная для работы с SOAP. Вот пример:
require_once 'path/to/nusoap.php';
$client = new nusoap_client('http://example.com/soap.wsdl');
$error = $client->getError();
if ($error) {
    echo 'Error: ' . $error;
} else {
    $response = $client->call('SomeFunction', ['param1' => 'value1', 'param2' => 'value2']);
}

В этой статье мы рассмотрели различные методы выполнения XML-запросов SOAP в PHP. Мы рассмотрели использование встроенного расширения SOAP, cURL, HTTP-клиента Guzzle и библиотеки NuSOAP. В зависимости от требований вашего проекта и имеющихся ресурсов вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Эти примеры должны обеспечить прочную основу для интеграции веб-служб SOAP в ваши приложения PHP.