Page 1 of 1

Problema con PostRequest de WebDataSource

Posted: Thu May 07, 2020 8:55 am
by bingen
Buenas xTeam.

WebDataSource es una joyita que nos ha abierto muchos nuevos campos al poder trabajar directamente con bases de datos en Internet como si fueran locales y combinar ambos mundos para infinidad de posibilidades que antes ni soñabamos. Lo usamos mucho y recomiendo su uso.

Muy de vez en cuando nos da este error en un bucle que lee un dato de un webdatasouce cada minuto durante las 24 horas:

___________________Información del compilador y del entorno____________________

Versión Xailer: Xailer 6.9.1
Compilador: Harbour 3.2.0dev (r1803161710)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
Plataforma: Windows Server 2016 10.0
Mysql Server: Version 10.2.14-MariaDB
BBDD en uso: xgescontactos

______________________ Información detallada del error ______________________

Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: No existe el m‚todo
Operación: POSTREQUEST
Argumentos: [ 1] = Tipo: U Valor: NIL [ 2] = Tipo: C Valor: WebDatasource/xa_wdsMySql.php?command=QUERYARRAY&validate=xxxxxxxxxxxxxxxxxxxxxxxxxx = Tipo: C Valor: data=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fichero:
Código error SO: 0

Pila de llamadas:
TWEBDATASOURCE:REQUEST (599)
TWEBDATASOURCE:QUERYVALUE (394)
VERMENSAJESENTREUSUARIOS (850)

Y resulta que antes del postrequest pregunto si existe el Webdatasouce, lo abro y hago el request, pero llega al postrequest y el objeto es NIL.

//Mensajería a través de Web para aplicación móvil
If Appdata:lWebMensajes .And. Appdata:oWebDataSource<>Nil
AppData:oWebDataSource:lConnected := .T.
If AppData:oWebDataSource:lConnected
nClienteId := AppData:oWebDataSource:QueryValue("select id from clientes where nombre="+ValToSql(Appdata:cLicEmpresa))

Funciona perfectamente pero algunas mañanas llego y tengo este error en pantalla.

Gracias.

Re: Problema con PostRequest de WebDataSource

Posted: Thu May 07, 2020 9:36 am
by ignacio
Buenos días,

Está fallando en este línea:

Code: Select all

   WITH OBJECT ::oConnection
>>>>> hData := ::HttpValid( :PostRequest( ::cPhpModule + cGet, cPost ) )


Y el problema es que ::oConection vale NIL y esto sólo es posible si he llamado al método TWEbDataSource:Disconnect().

Unas líneas más arriba, en la línea 574 hay este código:

Code: Select all

   IF !::Ready()
      RETURN .f.
   ENDIF


Que comprueba si la conexión está lista y debería haber controlado el problema. No obstante pasale un valor .T. al método Ready() para que genere un error de ejecución.

Sin un ejemplo que reproduzca el error, poco más se puede hacer. Lo siento.

Saludos