AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Servicios web
  • Modo de funcionamiento
  • Caso especial: Uso de un WebService intermedio
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Permite declarar una lista de variables cuyo valor será persistente entre las llamadas sucesivas a un servicio web.. Esta función indica las variables que se guardarán y restaurarán durante cada llamada al servicio web.. Esto le da la posibilidad de gestionar un contexto en el servicio web..
La gestión de contextos se realiza en disco. Para obtener más información, consulte Generación de un servicio web.
DeclareWebserviceContext se tiene en cuenta al ejecutar los servicios web implementados en el servidor de aplicaciones WEBDEV (servicio web en .AWWS).
Se recomienda utilizar esta función en la Event "Inicialización" del proyecto (para las variables del proyecto) y/o en el código de inicialización de las clases o conjuntos de procedimientos. En la mayoría de los casos, esta función debe ser utilizada en la Process donde las variables son declaradas e inicializadas.
Si el proyecto utiliza sesiones preiniciadas, esta función no debe utilizarse en el evento "Inicialización" del proyecto. Debe utilizarse en el evento "Inicialización del proyecto después de la conexión al sitio".
Atención:
  • Esta función está dirigida a los desarrolladores con un buen conocimiento de WINDEV/WEBDEV.
  • Por Default, un servicio web de REST no tiene un contexto. Por lo tanto, esta función no se puede utilizar en un servicio web REST..
// -- Project "Initialization" event
gnNumCurrentProduct is int = 1
 
// Indicate that the value of gnNumCurrentProduct must be saved
// whenever the Webservice is called
DeclareWebserviceContext(gnNumCurrentProduct)
 
// During the next calls to the Webservice:
// - either the value of gnNumCurrentProduct is not retrieved
// and it is automatically reinitialized with "1"
// (for example, during the first call by a new client)
// - or the value of gnNumCurrentProduct is retrieved and used
// (for example, during successive calls by the same client)
Sintaxis
<Result> = DeclareWebserviceContext(<Name of variable 1> [, <Name of variable 2> [... [, <Name of variable N>]]])
<Result>: booleano
  • True si se restauraron las variables especificadas,
  • False en caso contrario (al llamar al Webservice por primera vez, por ejemplo).
<Name of variable 1>: Tipo de variable
Nombre de la primera Variable que se guardará al final de la visualización. El valor de este Variable se recuperará durante las sucesivas llamadas al servicio web.
<Name of variable 2>: Tipo de variable
Nombre de la segunda Variable que se guardará al final de la visualización. El valor de este Variable se recuperará durante las sucesivas llamadas al servicio web.
<Name of variable N>: Tipo de variable
Nombre de la Nth Variable que se guardará al final de la visualización. El valor de este Variable se recuperará durante las sucesivas llamadas al servicio web.
Observaciones

Modo de funcionamiento

  • El contexto siempre se guarda en el disco y se transmite a través de una cabecera SOAP.
  • La función DeclareWebserviceContext utiliza contextos en el disco. Los valores de las variables siempre se restauran.
  • El tamaño total de los valores de las diferentes variables no está limitado.
  • La función DeclareWebserviceContext puede utilizarse para datos confidenciales (contraseña del usuario, por ejemplo).
  • Si se guardan dos variables con el mismo nombre (una en el proyecto y otra en una Page, por ejemplo), las dos variables se guardan independientemente.
  • DeclareWebserviceContext devuelve False si no se restauró una de las variables.
  • Todas las variables pasadas a DeclareWebserviceContext cuando se llama a un servicio web se pueden recuperar durante la próxima llamada. Las variables que se pasaron de antemano se guardan automáticamente de nuevo.
  • Se soportan las variables simples (entero, cadena, ...) así como las variables de estructura, clase, array o asociativas array.
  • No están soportados: el arrays fijo, los miembros globales de las clases, el arrays asociativo de las estructuras locales y los tipos avanzados de WLanguage (como las variables Connection por ejemplo).

Caso especial: Uso de un WebService intermedio

En algunos casos, puede que tenga que utilizar un servicio web intermedio para utilizar las variables.
Estudiemos el siguiente caso:
  • Un Webservice "WS1" utiliza la función DeclareWebserviceContext para una variable global "globalString". Este Webservice contiene 2 funciones:
    • "Write(param)" que asigna "param" en "globalString"
    • "Read()" que devuelve el contenido de "globalString".
  • Un ejecutable cliente, que consume WS1, llama a "WS1.Write("Hola")", luego "WS1.Read()" recupera la cadena enviada.
  • Un Webservice intermedio "WS2", consumidor de WS1, contiene 2 funciones:
    • "Write(param)" que llama a "WS1.Write()".
    • "Read()" que llama a "WS1.Read()".
  • Un ejecutable cliente, consumiendo WS2, llama a "WS2.Write("Hola")", entonces "WS2.Read()" NO recupera la cadena enviada.
Solución: En el Webservice WS2, utilice una función "WriteRead()" que ejecute "WS1.Write()" y "WS1.Read()" en el mismo Process.
Componente: wd290awws.dll
Versión mínima requerida
  • Versión 16
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 22/06/2023

Señalar un error o enviar una sugerencia | Ayuda local