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
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”
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
bella!
jeko