This is a feature request for adding a soap client (extending the one from PHP) which use a HttpClient implementation to send the soap request.
Having this allow to profit of all the debugging offer by the HttplugBundle for Soap requests.
/**
* Wrapper around PHP SoapClient to use a HttpClient instead of php, allow better control over the request.
*/
class SoapClient extends \SoapClient
{
private $httpClient;
public function __construct(HttpClient $httpClient, $wsdl, array $options = [])
{
$this->httpClient = $httpClient;
parent::__construct($wsdl, $options);
}
/**
* {@inheritdoc}
*/
public function __doRequest($body, $location, $action, $version, $one_way = 0)
{
$headers = [
'Content-Type' => sprintf('application/soap+xml; charset=utf-8; action="%s"', $action),
];
if ($version === SOAP_1_1) {
$headers = [
'Content-Type' => 'text/xml; charset=utf-8',
'SOAPAction' => $action,
];
}
try {
$response = $this->httpClient->sendRequest(new Request('POST', $location, $headers, $body));
} catch (HttpException $exception) {
return $exception->getResponse()->getBody()->getContents();
}
return $response->getBody()->getContents();
}
}
This is a feature request for adding a soap client (extending the one from PHP) which use a HttpClient implementation to send the soap request.
Having this allow to profit of all the debugging offer by the HttplugBundle for Soap requests.
Here is an example of what we have done in a project :