# SOAP Timeout

**URL:** <https://www.ruby-forum.com/t/soap-timeout/103715>\
**Category:** IT\
**Created:** [May 9, 2007, 5:02pm UTC](https://www.ruby-forum.com/t/soap-timeout/103715 "2007-05-09T17:02:49Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![esox\_ch](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/4da419/32.png) [@esox\_ch](https://www.ruby-forum.com/u/esox_ch)\
**Post date:** [May 9, 2007, 5:02pm UTC](https://www.ruby-forum.com/t/soap-timeout/103715/1 "2007-05-09T17:02:49Z")

</div>

ciao a tutti

sapete come si fa ad allungare il timeout di una richiesta SOAP?

questo pseudocodice magari vi da un idea di cosa sto facendo

jeko

--------8\<------------8\<------------8\<----------

require ‘soap/wsdlDriver’

```
  factory = SOAP::WSDLDriverFactory.new(URLWSDL)
  client = factory.create_rpc_driver()
  client.wiredump_file_base = "soap-log.txt"
  result = client.metodo(:param => valore)
  message = result.metodoResult
  p message
```

---

<div class="post-metadata">

**Author:** ![esox\_ch](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/4da419/32.png) [@esox\_ch](https://www.ruby-forum.com/u/esox_ch)\
**Post date:** [May 11, 2007, 7:18pm UTC](https://www.ruby-forum.com/t/soap-timeout/103715/2 "2007-05-11T19:18:04Z")

</div>

ovvero - me la canto e me la  
sòno  
questa la posto perché è praticamente una feature non documentata

per fare un client SOAP che usi un WSDL si fa cosi

require ‘soap/wsdlDriver’  
URLWSDL = “[http://url/del/file/wsdl](http://url/del/file/wsdl)”

factory = SOAP::WSDLDriverFactory.new(URLWSDL)  
driver = factory.create\_rpc\_driver()

```
#questa è la riga dove setto il timeout di ricezione
driver.options["protocol.http.receive_timeout"] = 600

driver.wiredump_file_base = "soap-log.txt"

result = client.nomeMetodo(:nomeParametro => valore, :nomeParametro2 

```

=\> valore2 … )  
message = result.nomeMetodoResult

la cosa simpatica ed estremeamente infame è che se a run time vedete il  
valore di driver.options[“protocol.http.receive\_timeout”] vi ritorna  
nil e che se andate avanti ad inspect arrivate a una struttura del tipo  
driver.options[“protocol”][“http”][“receive\_timeout”] che però è read only  
quindi si sono inventati  
driver.options[“protocol.http.receive\_timeout”] per permettere di  
cambiare il timeout della libreria NET::HTTP che viene implicitamente  
chiamata da SOAP

quindi, se dovete cambiare il send\_timeout o il receive\_timeout o il  
connect\_timeout ricordatevi queste 4 righe 🙂 anche perché sono  
socumentate solo nel changelog 1.8.1 \> 1.8.2

[http://dev.ctor.org/soap4r/wiki/Changes-ruby181\_ruby182](http://dev.ctor.org/soap4r/wiki/Changes-ruby181_ruby182)

bella!  
jeko
