如何设置savon默认超时值

时间:2011-06-17 10:05:43

标签: ruby-on-rails soap savon

我正在使用savon进行一些api调用,但由于我正在等待错误,所以需要很长时间才能响应。所以有任何方法可以更改超时的默认值。我使用savon 0.7.9 ruby​​ 1.8.7和rails -v 2.3.2。

2 个答案:

答案 0 :(得分:23)

Savon使用gem HTTPI作为传输层的接口。因此,您需要更改http调用的超时。

这里有一个例子(Savon 1.x)

jira = Savon::Client.new do
    wsdl.document = 'http://jira.my-domain.com/rpc/soap/jirasoapservice-v2?wsdl'
end

jira.http.read_timeout = 300

编辑:Savon 2.x的语法已经改变

jira = Savon.client(
    wsdl: 'http://jira.my-domain.com/rpc/soap/jirasoapservice-v2?wsdl',
    open_timeout: 300,
    read_timeout: 300,
    ssl_verify_mode: :none)
p jira.operations

答案 1 :(得分:1)

Savon 3 中,操作如下:

client = Savon.new(wsdl_url)
client.http.send_timeout    = 300
client.http.receive_timeout = 300

在Savon 3中,您无法将这些作为选项传递给构造函数,但您可以提供自定义http适配器(以替换默认的Savon :: HTTPClient),如下所示:

client = Savon.new(wsdl_url, MyAdapter.new)