SOAP Timeout


#1

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

#2

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 :slight_smile: anche perché sono
socumentate solo nel changelog 1.8.1 > 1.8.2

http://dev.ctor.org/soap4r/wiki/Changes-ruby181_ruby182

bella!
jeko