Kar*_*tle 2 ruby header http savon
例如,如何从Savon请求中删除HTTP标头
client.request 'v5:ProcessShipments' do
client.http.headers["SOAPAction"] = "example_post"
end
Run Code Online (Sandbox Code Playgroud)
这会产生
DEBUG -- : SOAPAction: example_post
Run Code Online (Sandbox Code Playgroud)
服务器会响应
Server did not recognize the value of HTTP Header SOAPAction: example_post.
Run Code Online (Sandbox Code Playgroud)
但是,我不想要任何SOAPAction(s)
我试图清除变量并删除它.我搜索了一会儿,找不到任何东西,所以我希望以前没有问过.
提前致谢.
如果我不覆盖它,那么默认情况下Savon将使用client.request'v5:ProcessShipments',这也是不正确的.
以下是savon文档中有关未来参考的引用:
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
Run Code Online (Sandbox Code Playgroud)
以下是它生成的请求:
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>
Run Code Online (Sandbox Code Playgroud)
如您所见,没有SOAPAction HTTP标头.
HTH
归档时间: |
|
查看次数: |
3514 次 |
最近记录: |