In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Limitar tiempo de espera
Limitar tiempo de espera
Estoy haciendo una conexión:
oHttp := CreateObject( "MSXML2.XMLHTTP.6.0" )
oHttp:Open( "POST", cURL, .f.)
Todo bien, pero cuando la URL está caída se queda colgada, y quiero limitar el tiempo de espera, pero no he logrado hallar la ayuda para hacer dicho límite.
Gracias de antemano.
Saludos.
oHttp := CreateObject( "MSXML2.XMLHTTP.6.0" )
oHttp:Open( "POST", cURL, .f.)
Todo bien, pero cuando la URL está caída se queda colgada, y quiero limitar el tiempo de espera, pero no he logrado hallar la ayuda para hacer dicho límite.
Gracias de antemano.
Saludos.
Re: Limitar tiempo de espera
[Spanish by Google:]
Hola ramon
El objeto no tiene una propiedad de tiempo de espera.
Una idea es usar un DO WHILE.
P.ej.:
Fuente:
https://docs.microsoft.com/en-us/previo ... 3dvs.85%29
Espero eso ayude.
Saludos,
Juliano
Hola ramon
El objeto no tiene una propiedad de tiempo de espera.
Una idea es usar un DO WHILE.
P.ej.:
Código: Seleccionar todo
// oHttp:readyState = 4 mean it is done
nTimeout := 4 // in seconds
nSeconds := Seconds()
DO WHILE oHttp:readyState <> 4
IF Seconds() - nSeconds > nTimeout
EXIT
ENDIF
Sleep(1000)
END
https://docs.microsoft.com/en-us/previo ... 3dvs.85%29
Espero eso ayude.
Saludos,
Juliano
Re: Limitar tiempo de espera
Gracias, si eso hice pero cuando es un webservice siempre regresa 1, y hasta hacer un SEND. pasa a 4 el readystate.
Saludos
Saludos
Re: Limitar tiempo de espera
Hola ramon
Eche un vistazo al parámetro "varAsync" en la documentación del método abierto. Creo que si lo configura como falso, puede usar el "onreadystatechange" para controlar el "timeout" allí.
https://docs.microsoft.com/en-us/previo ... 3dvs.85%29
Eche un vistazo a los comentarios y al final de la página.
Saludos,
Juliano
Eche un vistazo al parámetro "varAsync" en la documentación del método abierto. Creo que si lo configura como falso, puede usar el "onreadystatechange" para controlar el "timeout" allí.
https://docs.microsoft.com/en-us/previo ... 3dvs.85%29
Eche un vistazo a los comentarios y al final de la página.
Saludos,
Juliano
Re: Limitar tiempo de espera
Buenas, que yo sepa, sí tiene un tiempo de espera:
xmlServerHttp.setTimeouts(lResolve, lConnect, lSend, lReceive);
Son en milisegundos.
Ejemplo de uso:
xmlServerHttp.setTimeouts(lResolve, lConnect, lSend, lReceive);
Son en milisegundos.
Ejemplo de uso:
Código: Seleccionar todo
var xmlServerHttp = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
var lResolve = 5 * 1000;
var lConnect = 5 * 1000;
var lSend = 15 * 1000;
var lReceive = 15 * 1000;
xmlServerHttp.setTimeouts(lResolve, lConnect, lSend, lReceive);
xmlServerHttp.open("GET", "http://localhost/sample.xml", false);
xmlServerHttp.send();
Re: Limitar tiempo de espera
Gracias por sus respuestas, ya probé el SetTimeOut y marca error.
Haciendo más pruebas he detectado que en el Open, devuelte el StatusReady == 1, y donde se cuelga es en el método Send().
Sigo investigando de todos modos.
Saludos.
Haciendo más pruebas he detectado que en el Open, devuelte el StatusReady == 1, y donde se cuelga es en el método Send().
Sigo investigando de todos modos.
Saludos.
Re: Limitar tiempo de espera
Estaba poniendo fuera de lugar el SetTimeOuts, solo que me manda error de argumentos, y he seguido los pasos de la documentación y de muchos ejemplos que he encontrado.
:SetTimeouts(300000, 300000, 30000, 30000)
:SetTimeouts(Int(nResolve), Int(nConnect), Int(nSend), Int(nReceive))
:SetTimeouts(nResolve, nConnect, nSend, InReceive)
Siempre de marca:
Error de argumento SETTIMEOUTS
Qué estoy haciendo mal?
Gracias de antemano.
:SetTimeouts(300000, 300000, 30000, 30000)
:SetTimeouts(Int(nResolve), Int(nConnect), Int(nSend), Int(nReceive))
:SetTimeouts(nResolve, nConnect, nSend, InReceive)
Siempre de marca:
Error de argumento SETTIMEOUTS
Qué estoy haciendo mal?
Gracias de antemano.
Re: Limitar tiempo de espera
Este código no da error en settimeouts:
En xailer 5.0.1
Un saludo.
Código: Seleccionar todo
local oHttp
oHttp := CreateObject("MSXML2.ServerXMLHTTP.6.0")
if ValType(oHttp)<>"O"
MsgInfo("No tenemos el objeto...")
return nil
endif
// La web de la aeat donde conectamos.
oHttp:Open("POST", "http://ec.europa.eu/taxation_customs/vies/services/checkVatService", .f.)
// Establecer el timeout de la operación:
// resolveTimeout, connectTimeout, sendTimeout, receiveTimeout
// Los valores son en milisegundos:
oHttp:setTimeouts(15000, 15000, 600000, 600000)
// El método al que vamos a llamar.
oHttp:SetRequestHeader("SOAPAction", "checkVatApprox")
oHttp:Send("")
MsgInfo(oHttp:responsexml:xml)
Un saludo.