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
WIN_OLECREATEOBJECT() DUDAS
Re: WIN_OLECREATEOBJECT() DUDAS
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:
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
Aunque algo así seguramente sea más adecuado
y después seguramente valorar el resultado obtenido en
Espero te sirva de ayuda
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
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
oOle:WaitForResponse( 1000 ) // 10000
Aunque algo así seguramente sea más adecuado
Code: Select all | Expand
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
? 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
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
Re: WIN_OLECREATEOBJECT() DUDAS
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()
No se como simular el retardo en en server !!!
Abrazo
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()


No se como simular el retardo en en server !!!
Abrazo
Re: WIN_OLECREATEOBJECT() DUDAS
Existe el metodo
Pero no he tenido ocasión de probarlo.
Code: Select all | Expand
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
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