Consumir webservice con powerbuilder

Se debe crear un proxy al servicio web, por medio del "Web service proxy wizard"

Se deben importar las librerias: (Estas se encuentran el las carpetas de instalacion de power builder)

PBDOM110.pbx

pbsoapclient110.pbx

pbwsclient110.pbx

Luego se debe ejecutar "Deploy" para que el powerbuilder construya el proxy al servicio web.

Se crea una funcion que recibe una variable de tipo string(Que es el nombre del campo del cual queremos el valor) y retorna un string que es el valor buscado:
string      dato;
long       conexion_estatus;
pbdom_builder    lector_xml;
pbdom_document  documento_xml;
pbdom_element  elemento_xml;
pxservice1    servicio;

//crea un objeto soap para conectar al servicio web
SoapConnection conexion_ws;
conexion_ws = create SoapConnection;

//configura un archivo de logs para ver errores de la conexion
conexion_ws.setoptions( 'SoapLog="c:\\soaplog.txt"');

//realiza la conexion al servicio web
conexion_estatus = conexion_ws.createinstance( servicio,"pxservice1");

//Verifica que la conexion se alla realizado con exito
if (conexion_estatus <> 0) then
 MessageBox("Error", "Error al contactar el servicio web.", Exclamation!, OK!,1);
 end if

//recibe la informacion del webservice llamando a la funcion informacion_deudor con el parametroidentificacion_deudor
dato = servicio.informacion_deudor( identificacion_deudor);

//decodifica el archivo xml y crea un documento dom
lector_xml = Create pbdom_builder;
documento_xml = lector_xml.BuildFromString (dato);
elemento_xml = documento_xml.getrootelement( ).getchildelement( "deudor");
elemento_xml = elemento_xml.getchildelement( "nombre_completo");
return string(elemento_xml.gettext( ));

John J. Martinez

http://solucionesjj.blogspot.com

22 comentarios:

  1. Hola John, muy buena tu idea, ahora tengo que hacerte unas preguntas por favor...
    necesito bajar de un link un txt y luego importar ese archivo plano a una tabla de sybase con Power builder estoy trabajando con la version 9, se puede?
    para esto debo armar un ws?
    desde ya, muchas gracias!!!
    Fabricio

    ResponderEliminar
  2. Hola, que pena la demora!! bueno te cuento que esa parte no la manejo muy bien, no trabajo SQLAnywere, en MSSQL lo que hago normalmente es crear un dts para carga de datos. cualquier cosa con mucho gusto!! siento no ser tan útil!

    ResponderEliminar
  3. Ante todo agradezco la publicacion amigo John.
    Ahora si no fuera mucha molestia te pediria q publiques un ejemplo entre power builder y PHP conectados con Web service.
    Por ahi he leido que necesito librerias NUSOAP propias para el cliente PB que se comuniquen con el web service en php.
    Agradezco de antemano tus respuestas
    Saludos desde Peru

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. I recently came across your blog and have been reading along. I thought I would leave my first comment.
    I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.
    Thank You
    PowerBuilder

    ResponderEliminar
  6. you are right @Jajob its Nice Post about PowerBuilder Development . Thanks for sharing few of information .

    ResponderEliminar
  7. Hola John:

    ¿Lo mismo es para Power Builder 8?
    De no ser igual, de que manera puedo consumir WS con PB 8?

    Gracias..

    ResponderEliminar
    Respuestas
    1. Hola!!!, no estoy seguro si funciona en PB8 no uso ese, uso la 11 y se que de hay en adelante si se usa.

      Eliminar
  8. Abraham no estoy seguro, la verdad empece a trabajar con las versiones de powerbuilder desde la 11 en adelante, no estoy seguro de las anteriores, aunque pensaría que es posible!

    ResponderEliminar
  9. Hola de Nuevo John:

    Sabes el PB 8 no tiene el WEB SERVICE PROXY WIZARD, ¿Sabrás si ese componente se puede adquirir e implementarla a PB 8?

    Gracias!!

    ResponderEliminar
    Respuestas
    1. Hola!!!, no estoy seguro si funciona en PB8 no uso ese, uso la 11 y se que de hay en adelante si se usa.

      Eliminar
  10. john te has encontrado con el inconveniente de consumir un webservice que requiera ws-security headers, estoy probando consumir con pb12 generando un proxy .net y no puedo agregar el header de seguridad wsse. porque no esta incorporado en el wsld.
    saludos
    y gracias

    ResponderEliminar
  11. John, tengo que hacer una comunicacion por web service con un ente fiscalizador, donde yo le envio 4 archivos y este me devuelve error ante alguna inconsistencia o bien me retorna datos que debo utilizar en otros procesos, tendras algun ejemplo de como hacerlo. Esto es para implementar factura electronica.

    ResponderEliminar
  12. Hola!, no no tengo un ejemplo, hace rato que no trabajo mas con este tema, ya que empezamos a utilizar todo por medio de .Net! lo siento!

    ResponderEliminar
  13. Si se puede hacer, yo he trabajdo con power builder desde la versión 4..!!!

    ResponderEliminar
  14. Estimado amigo primero felicitándote por el blog, mi consulta es si es posible implementar esta solución con PB 10 y si éste dispone de Web Service Proxy Wizard. Gracias

    ResponderEliminar
    Respuestas
    1. Un anónimo comentario, dice que si se puede!! que desde la versión 4 se hace!!, personalmente se que desde la 11 en adelante se puede.

      Eliminar
  15. Por favor, necesito un poco de sus ayudas...Recientemente cree 2 Web Services en PowerBuilder 12 que corren perfectamente desde mi PC. Los compilo y genero un archivo de instalación para instalarlo en otra màquina donde serà invocado por una aplicación hecha en Visual Studio. Una vez instalada, se invoca al servicio y da un error donde no se puede localizar un archivo y muestra la ubicación original donde fue creado el Web Service en mi PC...¿Qué debo hacer para solventar este problema? En realidad necesito que estos servicios corran en esa aplicación...Gracias

    ResponderEliminar
    Respuestas
    1. A lo mejor lo que te falta es definir como parámetro la dirección donde se alojaran o instalarán los web services, es decir dependiendo de donde los instales cambias las direcciones definidos en los parámetros, esta implementación deberias hacerla en el cliente que consume el web service.

      Eliminar
  16. Hola Jhon no si me puedas ayudar pero ami no me deja crear en PW12.5 el Web service proxy wizard me sale Cannot access the WSDL OR THE WSDL FILE IS INVALID.
    Estoy recien aprendiendo a conectare con wsdl gracias por tu ayuda

    ResponderEliminar
  17. Una consulta, debo consumir un ws desde power builder, ya cree a traves de service prozy wizard, pero como hago para cambiar la url, la cual se lee de una variable de configuracion que cambia segun el ambiente de trabajo. Gracias

    ResponderEliminar

Gracias por tus comentarios!