En un acceso por Web Service he tenido que utilizar una cabecera de seguridad. Para crear los nodos previstos por el estándar WSSE he tenido que hacer lo siguiente:
driver = ClassThatXtendsSOAPRPCDriver.new
sh = SOAP::SOAPHeader.new
sec = SOAP::SOAPElement.new('wsse:Security')
sec.add(SOAP::SOAPElement.new('wsse:UsernameToken'))
sec['wsse:UsernameToken'].add(SOAP::SOAPElement.new('wsse:Username', 'Iamtheman'))
sec['wsse:UsernameToken'].add(SOAP::SOAPElement.new('wsse:Password', 'Iamthelaw'))
sec.extraattr['mustUnderstand'] = '1'
sec.extraattr['xmlns:wsse'] = 'url_for_wssecurity_xsd'
sh.add('wsse:Security', sec)
sb = SOAP::SOAPBody.new
sb.add('OTA_HotelAvailRQ', SOAP::SOAPElement.new('my_node'))
...
my_response = driver.invoke(sh, sb)
He tenido que trabajar de esta forma porque con soap4r no he podido generar un driver adecuado a mis necesidades. Con la versión 1.5.7 hay nodos dentro de los ficheros XSD que no sabe interpretar y por ello no genera bien los tipos de datos que utiliza el driver. Parece que esto se arregla en la 1.5.8. Tendremos que probarlo.
Salud¡
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario