Ruby 如何删除“;SOAPAction“;来自Savon请求的HTTP头

Ruby 如何删除“;SOAPAction“;来自Savon请求的HTTP头,ruby,http,header,savon,Ruby,Http,Header,Savon,例如,如何从Savon请求中删除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. 但是

例如,如何从Savon请求中删除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.
但是我不想有任何肥皂剧动作

我已尝试清除该变量并将其删除。我搜索了一段时间,没有找到任何东西,所以我希望这之前没有被问过

提前谢谢

如果我没有覆盖它,那么默认情况下,Savon将使用client.request“v5:ProcessShippings”,这也是不正确的。

以下是未来参考的引用:

SOAPAction是遗留服务所需的HTTP头信息。 如果存在,则标题值必须用双引号括起来 URI参考(SOAP 1.1.规范,第6.1.1节)

通过阅读savon源代码,我发现savon::Client#request方法会在生成块之前自动设置“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>
SOAP请求:http://www.examples.com/SayHello/
调试--:内容类型:text/xml;字符集=UTF-8,内容长度:332
调试--:
正如您所看到的,没有SOAPAction HTTP头


HTH

嗨,Alex,这太好了,非常感谢您详细介绍了您是如何实际调试的。