Как изменить заголовок HTTP SOAPAction для \ SoapClient?

У меня есть довольно nitpicky SoapApi, с которым я хочу поговорить.

Мне нужно изменить заголовок SoapAction который отправляется с HTTP-запросом.

Я не говорю о \SoapHeader который передается вместе с Soap Envelop как часть XML-сообщения, но HTTP-заголовок SOAPAction .

Используя curl, я бы отправил запрос следующим образом:

 curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: http://tempuri.org/my-custom-action" --data @message.xml http://some-soap-endpoint.asmx --proxy le-proxy:3218 

Кажется, можно установить SoapAction только при создании SoapClient

Я прекратил использование \SoapClient и для этого конкретного API «Мыла» ( по другой причине ) использовал Guzzle вместо просто подражания запросу на завивание.

Там я выпустил простой почтовый запрос с необработанным XML-интерфейсом API, и теперь он работает; хотя я считаю, что это недостаток в том, что вы не можете использовать выделенный \SoapService .

Если кто-то задается вопросом, как отправить XML-запросы через жужжание, можно сделать следующее:

 $options = [ 'body' => $body, 'headers' => [ "Content-Type" => "text/xml; charset=utf-8", 'SOAPAction' => 'tempuri.org/my-custom-action', ], 'proxy' => 'tcp://le-proxy:3128', ]; $client = new Client(); $soapRequest = $client->createRequest( 'post', "http://some-soap-endpoint.asmx", $options ); try { $response = $client->send($soapRequest); } catch (RequestException $e) { /** * error handling */ } 

Однако я считаю это обходным путем.