WIN_OLECREATEOBJECT() DUDAS

WIN_OLECREATEOBJECT() DUDAS

Postby rterraz » Sat May 07, 2022 2:22 pm

Estimados amigos
Tengo un sistema de facturación que usa Factura Electronica a AFIP
Para establecer la comunicación con el WebService antes usabamos WIN_OLECREATEOBJECT('MSXML2.XMLHTTP') y lo cambiamos a WIN_OLECREATEOBJECT('Microsoft.XMLHTTP'),porque parece que este es mas rápido...esto es correcto ?
Esta función anda en cualquier versión de Windows ?
El principal problema que nos está preocupando es que al consultar al WS hay veces que ( creemos que por saturación del servidor) el sistema se queda esperando la respuesta del WS durante un tiempo prolongado impidiendo al usuario seguir con su proceso de facturación, es posible incluir un Timeout() que cuando esto ocurra cancele la consulta y libere el sistema , o una vez iniciada la misma la única manera de salir es esperar la respuesta del WS ?
Si alguien tiene alguna solución o sugerencia para evitar este problema agradeceria mucho me la hicieran saber.

un abrazo a todos
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: WIN_OLECREATEOBJECT() DUDAS

Postby cnavarro » Sat May 07, 2022 3:10 pm

El motivo de existir ( e incluso coexistir varios "protocolos" ) a los que hacer referencia, es sencilla: tema de compatibilidad con versiones anteriores. Internamente lo que ha hecho Microsoft ha sido cambiar el espacio de nombres que utiliza en su biblioteca/librerías en las nuevas versiones.
Sin entrar en detalles: las nuevas versiones son: "MSXML2.XMLHTTP.6.0", por lo que se supone que es la recomendada a utilizar, pero si estás utilizando ordenadores con SO más antiguos, la que utilizas seguramente sea la adecuada.
En cualquier caso, te recomiendo que utilices un pequeño fragmento de código que te permita valorar si está funcionando o no, por ejemplo algo como esto en el que incluyo otros que no has mencionado:
Code: Select all  Expand view  RUN

   local aOle    := { "MSXML2.ServerXMLHTTP.6.0", "MSXML2.XMLHTTP", ;  // "MSXML2.XMLHTTP.6.0" // "MSXML2.XMLHTTP.3.0"
                            "WINHTTP.WinHttpRequest.5.1", "Microsoft.XMLHTTP" }
   local oOle
   TRY
       oOle := CreateObject( aOle[ 1 ] )
   CATCH
       oOle := CreateObject( aOle[ 4 ] )
   END
 

Evidentemente es un ejemplo muy simple que habría que "complicar" estableciendo "salidas" para poder ejecutar cualquiera de los que incluyas en tu array.
En cuanto a lo que comentas del timeout, existe y es fácil de implementar
Code: Select all  Expand view  RUN

            oOle:WaitForResponse( 1000 )  // 10000
 

Aunque algo así seguramente sea más adecuado
Code: Select all  Expand view  RUN

   local n  := 0
.../...

    while ( oOle:ReadyState != 4 .or. n < 10 )
        oOle:waitForResponse( 1000 )
        n++
    end
 

y después seguramente valorar el resultado obtenido en
Code: Select all  Expand view  RUN

   ? oOle:Status != 200
 

Espero te sirva de ayuda
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: WIN_OLECREATEOBJECT() DUDAS

Postby rterraz » Sat May 07, 2022 4:23 pm

Hola Cristobal
Muchas gracias por tu ayuda, me ha sido muy esclarecedora...
Ya lo implementé, ahora tengo que esperar que el servidor AFIP se sature para poder ver si funciona el timeout() :D :D
No se como simular el retardo en en server !!!
Abrazo
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: WIN_OLECREATEOBJECT() DUDAS

Postby cnavarro » Sun May 08, 2022 8:56 am

Existe el metodo
Code: Select all  Expand view  RUN

oOle:setTimeouts( resolveTimeout, connectTimeout, sendTimeout, receiveTimeout)
 

Pero no he tenido ocasión de probarlo.
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 57 guests