2015-12-07 2 views
0

У меня есть довольно nitpicky SoapApi, с которым я хочу поговорить.Как изменить заголовок HTTP SOAPAction для SoapClient?

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

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

Использование локон Я бы отправить запрос, как это:

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 создания

ответ

0

я перестал использовать \SoapClient и для этого конкретного «мыльницы» API (for a different reason as well) вместо этого использовал 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 
    */ 
} 

Я считаю, что это временное решение, хотя.

Смежные вопросы