Я люблю структуру Guzzle, которую я только что обнаружил. Я использую его для агрегирования данных в нескольких API, используя разные структуры ответов. Работает с JSON и XML, но одна из служб, которые мне нужны, использует SOAP. Есть ли встроенный способ использования SOAP-сервисов с помощью Guzzle?Использование Guzzle для использования SOAP
ответ
IMHO Guzzle не имеет полной поддержки SOAP и работает только с HTTP-запросами. SRC/жрать/Http/ClientInterface.php Line: 76
public function createRequest(
$method = RequestInterface::GET,
$uri = null,
$headers = null,
$body = null,
array $options = array()
);
Даже если сервер SOAP настроен на переговоры по порту 80, я думаю, что PHP SoapClient более подходящее решение здесь, как он поддерживает WSDL
Я думаю, что теперь жужжат в версии 6. Знаете ли вы, что они внесли какие-либо изменения в поддержку SOAP? – gmponos
Старая тема , но поскольку я искал тот же ответ, кажется, async-soap-guzzle выполняет эту работу.
Вы можете получить Guzzle для отправки запросов SOAP. Обратите внимание, что в SOAP всегда есть конверт, заголовок и тело.
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<NormalXmlGoesHere>
<Data>Test</Data>
</NormalXmlGoesHere>
</soapenv:Body>
Первое, что я сделать, это построить тело XML с SimpleXML:
$xml = new SimpleXMLElement('<NormalXmlGoesHere xmlns="https://api.xyz.com/DataService/"></NormalXmlGoesHere>');
$xml->addChild('Data', 'Test');
// Removing xml declaration node
$customXML = new SimpleXMLElement($xml->asXML());
$dom = dom_import_simplexml($customXML);
$cleanXml = $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement);
Затем мы обернуть наш XML тело с мыльным конверт, заголовок и тело.
$soapHeader = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>';
$soapFooter = '</soapenv:Body></soapenv:Envelope>';
$xmlRequest = $soapheader . $cleanXml . $soapFooter; // Full SOAP Request
Затем нам нужно выяснить, какая наша конечная точка находится в api docs.
Затем мы строим клиента в жрать:
$client = new Client([
'base_url' => 'https://api.xyz.com',
]);
try {
$response = $client->post(
'/DataServiceEndpoint.svc',
[
'body' => $xmlRequest,
'headers' => [
'Content-Type' => 'text/xml',
'SOAPAction' => 'https://api.xyz.com/DataService/PostData' // SOAP Method to post to
]
]
);
var_dump($response);
} catch (\Exception $e) {
echo 'Exception:' . $e->getMessage();
}
if ($response->getStatusCode() === 200) {
// Success!
$xmlResponse = simplexml_load_string($response->getBody()); // Convert response into object for easier parsing
} else {
echo 'Response Failure !!!';
}
- 1. Использование Guzzle для аутентификации OpenSSL
- 2. Laravel - Использование Guzzle
- 3. Использование Guzzle без cURL
- 4. Установка Guzzle - использование клиента
- 5. Правильный конверт для использования для запроса SOAP?
- 6. Каков наилучший способ использования Guzzle для проверки наличия удаленного файла?
- 7. Документация API для Guzzle?
- 8. Использование Redis с плагином кэша Guzzle
- 9. Использование guzzle с CakePHP 2.x
- 10. SOAP для NodeJS без использования WSDL
- 11. Haskell: какой клиент для использования SOAP-клиента?
- 12. Композитор - Использование двух разных версий Guzzle
- 13. Использование Goutte/Guzzle с Laravel для отправки формы с CSRF
- 14. Любой вариант использования SOAP через SMTP/JMS?
- 15. PHP: Guzzle 6 + Guzzle-cache-middleware
- 16. Использование PHP SoapClient для использования WCF API
- 17. Использование SOAP в java
- 18. Использование веб-службы SOAP
- 19. Полностью отключить перенаправление для Guzzle
- 20. Каковы недостатки использования SOAP-сервисов?
- 21. Использование веб-службы SOAP для приложения какао
- 22. Использование libcurl для записи HTTPS-клиента SOAP
- 23. Использование C# для разбора SOAP-ответ
- 24. Использование CORS + SOAP + WCF для службы HTTPS
- 25. Использование фильтра CORS для службы SOAP
- 26. Использование TaskFactory.FromAsync для вызова веб-службы SOAP
- 27. Использование Finagle для простого клиента Scala SOAP
- 28. Использование SOAP для выведения операций CRUD
- 29. Использование WCF для вызова PHP SOAP службы
- 30. Использование XMLTABLE для разбора раздела CDATA SOAP
Я также хотел бы получить больше информации по этой теме. В документации Guzzle ничего не говорится о файлах .wsdl или SOAP. – Rvanlaak