2011-12-15 2 views
2

Как я могу удалить заголовки HTTP из запроса Савона, напримерКак удалить «SOAPAction» заголовок HTTP из запроса Савона

client.request 'v5:ProcessShipments' do 
    client.http.headers["SOAPAction"] = "example_post" 
end 

Это создаст

DEBUG -- : SOAPAction: example_post 

И сервер ответит

Server did not recognize the value of HTTP Header SOAPAction: example_post. 

Однако я не хочу иметь SOAPAction (ы)

Я попытался очистить переменную и удалить ее. Я искал какое-то время и не мог найти ничего, поэтому я надеюсь, что этого раньше не спрашивали.

Заранее спасибо.

Если я не переопределяю его, то по умолчанию Savon будет использовать client.request 'v5: ProcessShipments', что также неверно.

ответ

5

Вот цитата из savon documentation для будущих ссылок:

SOAPAction информация заголовка HTTP требует традиционных услуг. Если присутствует, значение заголовка должно иметь двойные кавычки, связанные с URI-ссылкой (SOAP 1.1. Spec, раздел 6.1.1).

Прочитав исходный код савона, я понял, что метод запроса Savon :: Client # автоматически устанавливает заголовок SOAPAction, прежде чем он выдает блок. Я пытался удалить заголовок SOAPAction, и она работала:

require 'savon' 

client = Savon::Client.new do 
    wsdl.document = "test.wsdl" 
end 

client.request :wsdl, "sayHello" do 
    http.headers.delete("SOAPAction") 
end 

Вот запрос он генерирует:

SOAP request: http://www.examples.com/SayHello/ 
DEBUG -- : Content-Type: text/xml;charset=UTF-8, Content-Length: 332 
DEBUG -- : 
<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:wsdl="http://www.examples.com/wsdl/HelloService.wsdl" 
          xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <env:Body> 
     <wsdl:sayHello></wsdl:sayHello> 
    </env:Body> 
</env:Envelope> 

Как вы можете видеть, что нет заголовка SOAPAction HTTP.

HTH

+0

Привет, Алекс, это замечательно и спасибо за подробное описание того, как вы на самом деле отлаживали это. –

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