9

我正在使用 savon 进行一些 api 调用,但它需要很长时间才能响应,因为我得到了超时错误。所以有什么方法可以更改超时的默认值。我正在使用 savon 0.7.9 ruby​​ 1.8.7 和 rails -v 2.3.2。

4

2 回答 2

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
于 2011-06-20T03:32:16.833 回答
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)
于 2014-05-15T15:06:20.833 回答