Método de base On Web Connection

4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 2004 (Modificado)


El Método de base On Web Connection puede llamarse en tres casos diferentes:

el servidor Web recibe una petición que comienza por el URL 4DCGI.

el servidor Web recibe una petición inválida.

también es llamado por 4D (modo local) o 4D Server cada vez que un navegador Web se conecte a la base en modo contextual, o que una petición necesite la creación de un contexto (este caso no es administrado por 4D en modo remoto, el cual no soporta el modo contextual).

Para mayor información, consulte a continuación el párrafo "Llamadas al Método de base On Web Connection".

La petición debe haber sido aceptada previamente por el Método de base On Web Authentication (si existe) y la base debe ser publicada como un servidor Web.

El método de base On Web Connection recibe seis parámetros de tipo texto, pasados por 4D. Los contenidos de estos parámetros son los siguientes:

ParámetrosTipoDescripción
$1TextoURL
$2TextoEncabezado HTTP + cuerpo HTTP (hasta 32 kb de límite)
$3TextoDirección IP del navegador
$4TextoDirección IP del servidor
$5TextoNombre de usuario
$6TextoContraseña

Debe declarar estos parámetros de esta manera:

      ` Método de base On Web Connection

   C_TEXT($1;$2;$3;$4;$5;$6)

      ` Código para el método

Datos extra del URL

El primer parámetro ($1) es el URL introducido por el usuario en área de ubicación de su navegador Web, menos la dirección local.

Tomemos el ejemplo de una conexión de Intranet. Supongamos que la dirección IP de su equipo servidor Web 4D es 123.4.567.89. La tabla siguiente muestra los valores de $1 dependiendo del URL introducido en el navegador Web:

URL introducido en el navegadorValor del parámetro $1
123.4.567.89/
http://123.4.567.89/
123.4.567.89/Clientes/Clientes
http://123.4.567.89/Clientes/Clientes
http://123.4.567.89/Clientes/Añadir/Clientes/Añadir
123.4.567.89/Hacer_esto/Si_OK/Hacer_eso/Hacer_esto/Si_OK/Hacer_eso

Note que usted es libre de utilizar este parámetro a su conveniencia. 4D simplemente ignora los valores pasados más allá de la parte local del URL.

Por ejemplo, puede establecer una convención donde el valor "/Clientes/Añadir" signifique "ir directamente a añadir un nuevo registro en la tabla [Clientes]." Suministrando a los usuarios Web de sus base una lista de posibles valores y/o marcadores por defecto, puede ofrecer atajos a las diferentes partes de su aplicación. De esta forma, los usuarios Web pueden acceder rápidamente a los recursos de su sitio Web sin tener que navegar cada vez que se conecten a su base.

Advertencia: Para evitar que un usuario acceda directamente a una base con un marcador creado durante una sesión anterior, 4D intercepta todo URL que corresponda a uno de los URLs estándar de 4D.

Encabezado y cuerpo de la petición HTTP

El segundo parámetro ($2) es el encabezado y el cuerpo de la petición HTTP enviada por el navegador Web. Note que esta información se pasa a su Método de base On Web Connection tal como está. El contenido varía en función del tipo de navegador Web que esté intentando la conexión.

Con Netscape 4.5 bajo Mac OS, puede recibir un encabezado similar a este:

GET / HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.5 (Macintosh; I; PPC)

Host: 123.45.67.89

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Accept-Encoding: gzip

Accept-Language: us

Accept-Charset: iso-8

Con Microsoft Internet Explorer 6 bajo Windows, puede recibir un encabezado similar a este:

GET / HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Host: 123.45.67.89

Accept: image/gif, image/x-xbitmap, image/pjpeg, */*

Accept-Language: us

Si su aplicación manipula esta información, es su decisión analizar el encabezado y el cuerpo.

Dirección IP del cliente Web

El tercer parámetro $3 recibe la dirección IP del equipo navegador. Esta información puede permitirle distinguir entre las conexiones de Intranet e Internet.

Dirección IP del servidor

El cuarto parámetro $4 recibe la dirección IP solicitada del servidor Web 4D. 4D autoriza el multi-homing, el cual le permite explotar equipos que tengan más de una dirección IP. Para mayor información, consulte la sección Web Server Settings.

Nombre de usuario y contraseña

Los parámetros $5 y $6 reciben el nombre de usuario y la contraseña introducidos por el usuario en la caja de diálogo estándar de identificación mostrada por el navegador. Esta caja de diálogo aparece para cada conexión, si la opción Utilizar contraseñas ha sido seleccionada en las Preferencias (ver sección Connection Security).

Nota: Si el nombre de usuario enviado por el navegador existe en 4D, el parámetro $6 (la contraseña del usuario) no se devuelve por razones de seguridad.

Llamadas al Método de base On Web Connection


El Método de base On Web Connection puede ser utilizado como punto de entrada para el servidor Web 4D, bien sea utilizando el URL especial 4DCGI, o utilizando los URLs de comando personalizados. También juega un papel de punto de entrada en modo contextual (con 4D in modo local y 4D Server).

Advertencia: La llamada de un comando 4D que muestra un elemento de interfaz (ALERT, DIALOG...) termina el procesamiento del método.

El Método de base On Web Connection se llama en los siguientes casos:

Cuando la conexión de un navegador a un servidor Web 4D funciona en modo contextual. El método de base se llama con el URL /<action>...

Cuando 4D recibe el URL /4DMETHOD. El servidor Web pasa en modo contextual y el método base se llama con el URL /4DMETHOD/NombreMetodo en $1.

Cuando 4D recibe el URL /4DCGI. El método de base se llama con el URL /4DCGI/<action> en $1.

Cuando una página Web llamada con un URL de tipo <ruta>/<archivo> no se encuentra. El método de base se llama con el URL (*).

Cuando una página Web se llama con un URL del tipo <file>/ y ninguna página ha sido definida por defecto. El método de base se llama con el URL (*).

(*) En estos casos particulares, el URL recibido en $1 NO comienza por el carácter "/".

Para conocer el origen de la llamada del Método de base On Web Connection y adaptar el tratamiento a efectuar, debe utilizar la función Web Context, que devuelve True si se llama desde modo contextual, de lo contrario False.

Por lo tanto, le sugerimos estructurar el Método de base On Web Connection de la siguiente forma:

      `Método de base On Web Connection
   C_TEXT($1;$2;$3;$4;$5;$6)
   If (Web Context) `Si en modo contextual
      WithContext ($1;$2;$3;$4;$5;$6)
         `El método WithContext contiene todo lo que estaba en el
         `Método de base On Web connection en 4D 6.0.x
   Else
      NoContext ($1;$2;$3;$4;$5;$6)
         `El método NoContext efectúa los procesos de las peticiones
          no contextuales (generalmente cortas)
   End if

Ejemplo: Implementación de las páginas Home locales en modo contextual

En el siguiente ejemplo, el parámetro $1, enviado al Método de base On Web Connection, se utiliza para implementar las páginas Home dentro de una empresa. El servidor Intranet funciona en modo contextual.

La base tiene dos tablas: [Clientes] y [Tablas]. El método de base On Startup mostrado a continuación inicializa los arrays interprocesos utilizados posteriormente por el Método de base On Web Connection.

      ` Método de base On Startup

      ` Lista de las tablas
   ARRAY STRING(31;<>asTablas;Get last table number)
   For ($vlTabla;1;Size of array(<>asTablas);1;-1)
      If(Is table number valie($vlTabla))
         <>asTablas{$vlTabla}:=Table name($vlTabla)
      Else
         DELETE FROM ARRAY(<>asTablas;$vlTabla)
      End if
   End for 

      ` Acciones Web estándar en la conexión
   ARRAY STRING(31;<>asActions;2)
   <>asActions{1}:="Añadir"
   <>asActions{2}:="Lista"

El objetivo principal del Método de base On Web Connection es descifrar los datos del URL ubicados después de la parte local de la dirección y actuar en consecuencia. El método es el siguiente:

      ` 
Método de base On Web Connection



   C_TEXT($1;$2;$3;$4;$5;$6)
   C_TEXT($vtURL)

   If (Web Context) `Si estamos en modo contextual
         ` Por precaución, verifique que $1 es igual a "/" o "/..."
      If ($1="/@")
            ` Copiar el URL en una variable local menos el primer "/" 
         $vtURL:=Substring($1;2)
            ` Analizar el URL y llenar un array local con la información del URL
            ` Por ejemplo, si los datos extra del URL son "aaa/bbb/ccc", el array resultante
            ` tendrá los tres elementos "aaa", "bbb" y "ccc" en ese orden
         $vlElem:=0
         ARRAY TEXT($atTokens;$vlElem)
         While ($vtURL # "")
            $vlElem:=$vlElem+1
            INSERT IN ARRAY($atTokens;$vlElem)
            $vlPos:=Position("/";$vtURL)
            If ($vlPos>0)
               $atTokens{$vlElem}:=Substring($vtURL;1;$vlPos-1)
               $vtURL:=Substring($vtURL;$vlPos+1)
            Else 
               $atTokens{$vlElem}:=$vtURL
               $vtURL:=""
            End if 
           End while 
            ` Si los datos extras se pasan después de la parte local del URL  
         If ($vlElem>0)
               ` Utilizar el array interproceso inicializado en el método On Startup DB
               ` Verificar si la primera información es un nombre de tabla
            $vlTablaNumero:=Find in array(<>asTablas;$atTokens{1})
            If ($vlTablaNumero>0)
                  ` Si es así, obtener un puntero a esta tabla
               $vpTabla:=Table($vlTablaNumero)
                  ` Definir los formularios de entrada y salida
               INPUT FORM($vpTabla->;"Input Web")
               OUTPUT FORM($vpTabla->;"Output Web")
                  ` Utilizar un array interproceso inicializado en el Método On Startup DB
                  ` Verificar si la segunda información es una acción estándar conocida
               $vlAction:=Find in array(<>asActions;$atTokens{2})
               Case of 
                     ` Añadir registros
                  : ($vlAction=1)
                     Repeat 
                        ADD RECORD($vpTabla->;*)
                     Until (OK=0)
                     ` Listar registros          
                  : ($vlAction=2)
                     READ ONLY($vpTabla->)
                     ALL RECORDS($vpTabla->)
                     DISPLAY SELECTION($vpTabla->;*)
                     READ WRITE($vpTabla->)
                  Else 
                     ` Acá puede añadir acciones estándar extras a implementar
               End case 
            Else 
               ` Acá puede añadir otras acciones estándar
            End if 
         End if 
      End if 
         ` En todos los casos, continuar con el proceso estándar de conexión
      WWW NORMAL LOG ON 
   Else
      ...  ` Colocar eventualmente acá el código que administra el modo no contextual
   End if

En este momento, los miembros de la empresa pueden conectarse a la base e introducir un URL de acuerdo a la convención definida por los métodos listados. Los usuarios también pueden crear marcadores si no quieren reintroducir la URL cada vez. De hecho, la última solución es proveer a cada miembro de la organización con una página HTML que utilizarán localmente para acceder a la base. Esta es la página HTML:

En otras palabras, la página HTML ACME.HTML es la página Home del cliente local para el sistema de información de la empresa basado en 4D. Si un usuario hace clic en el enlace Añadir nuevos productos, el navegador Web se conectará al host que tiene el URL http://192.168.1.109/Productos/Agregar. Si la dirección IP del ordenador donde se encuentra la base es 192.168.1.109, el Método de base On Web Connection recibe los datos extra del URL "/Products/Add" en $1 y procede a añadir registros en la tabla [Productos].

Por último, los usuarios pueden arrastrar y soltar enlaces desde la página en el escritorio para crear los iconos de atajo Internet, tal como el icono que se muestra a continuación. Con sólo hacer doble clic en estos iconos se envía directamente al usuario al área especifica de su base 4D Web.

El código fuente de esta página HTML es el siguiente:

Ver también

Método de base On Web Authentication, Métodos de base de datos, URLs y acciones de formularios, Utilizar el modo contextual .


4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente