4 Location Based Services
4.5 Categorizing Location Based Services
4.5.5 Asset Tracking
A continuación, de la misma forma que se ha hecho con las propiedades del objeto Response, se va a hacer una breve descripción de los métodos que nos ofrece este objeto.
• AddHeader: agrega un nuevo encabezado HTML a la respuesta. Este método no es muy utilizado. Permite definir nuevos encabezados. Su sintaxis es: Response.AddHeader nombreEncabezado, valorEncabezado.
• AppendToLog: agrega una cadena al final de la entrada de registro del servidor Web para la petición. IIS se puede configurar para registrar las peticiones de los clientes en una base de datos o en un fichero de log. Este método permite agregar una cadena a la información que será almacenada por el usuario acerca de una petición de un cliente.
• BinaryWrite: este método es utilizado para escribir información directamente en la salida HTTP, es decir, el navegador del cliente, sin ningún tipo de interpretación. Este método es útil cuando se necesita enviar pequeños gráficos, multimedia u otros componentes que no son texto.
• Clear: elimina el contenido del código HTML del búfer.
• End: detiene el procesamiento de la página ASP y devuelve los resultados obtenidos hasta la llamada a End.
• Flush: envía al navegador el contenido del búfer antes de finalizar el procesamiento de la página ASP.
• Redirect: se redirecciona al navegador Web del cliente a la dirección que se le pasa como parámetro.
• Write: escribe en el navegador del cliente.
Clear, Flush y End
Se ha decidido agrupar la explicación de estos tres métodos, ya que están íntimamente relacionados y además siempre se suelen usar en combinación. Los métodos Clear, Flush y End, deben ser utilizados cuando la propiedad Buffer del objeto Response esté activada, es decir, tiene como valor True, ya sabemos que este es el valor por defecto de esta propiedad.
Cuando está activado el almacenamiento en el búfer existen varias formas de enviar la información del búfer al navegador del cliente:
• Llamando al método Flush.
• Llamando al método End. De esta forma también se detiene la ejecución de la página ASP. • Cuando finaliza le ejecución de la página ASP, es decir, cuando se ejecuta la última línea de
las secuencias de comandos de servidor.
El método Clear se utiliza cuando se quiere eliminar todo el contenido que posee el búfer, pero esto no implica que se borre el contenido que ya se ha enviado al cliente, a ese contenido ya no se tiene acceso, así por ejemplo el Código fuente 77 produciría un error.
<HTML> <HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <BODY> <b>Esto es contenido</b> <%Response.Flush Response.Clear Response.Redirect "pruebas.asp"%> </BODY> </HTML> Código fuente 77
La utilización de estos métodos junto con la propiedad Buffer nos permite controlar el procesamiento de la página ASP de una forma muy sencilla y eficaz. Para mostrar el uso de estos métodos junto con el almacenamiento en búfer vamos a ver un sencillo ejemplo que va mostrando poco a poco un texto en pantalla, Código fuente 78.
<%strTexto="Texto que se va mostrando poco a poco en el navegador" For i=1 to Len(strTexto)
'se realiza una pausa For j=1 To 100000
Next
Response.Write Mid(strTexto,i,1) 'se envía el contenido del búfer Response.Flush
Next%>
Código fuente 78
El efecto de este código es que se va enviando el texto caracter a caracter mediante el método Flush, para que se produzca una pausa se realiza un bucle For adicional. Si situamos la sentencia Response.Flush al final del código, aparecerá todo el texto de una sola vez.
Este ejemplo no resulta muy útil pero muestra bastante bien el la utilización del método Flush y el concepto de búfer. De todas formas los ejemplos que se muestran todavía son bastante simples debido a que de momento sólo contamos con un objeto integrado de ASP, el objeto Response, en el siguiente tema, cuando veamos el objeto Request se podrán ver ejemplos más interesantes.
Write
A lo largo de los distintos ejemplos que hemos visto hasta ahora en el curso, en alguno de ellos hemos utilizado la sentencia Response.Write, por lo tanto ya sabemos exactamente la función de este método del objeto Response.
Pero también para escribir se han utilizado los delimitadores <%=%>. Estos delimitadores son equivalentes a escribir Response.Write, se pueden considerar como su abreviatura.
El método Response.Write se utilizará dentro de una bloque de script de servidor, es decir, un bloque de código encerrado por los delimitadores <%%>, y el uso de los delimitadores <%=%> será adecuado cuando se necesite intercalar una línea aislada entre código HTML:
Como ya se ha visto, el método Write se puede utilizar para escribir texto en el navegador. Las llamadas a métodos y las variables dentro del método Write serán evaluadas y sólo el resultado se escribirá en el navegador del cliente.
Por ejemplo, el Código fuente 79 mostrará el valor de la variable contador en el navegador del cliente.
<%Response.Write("La variable contador contiene el valor: "&contador)%> Código fuente 79
El uso de paréntesis en el método Write es opcional. Si tenemos en cuenta los delimitadores <%=%>,
de forma equivalente podríamos haber escrito lo que muestra el Código fuente 80, o bien, lo que muestra el Código fuente 81.
<%="La variable contador contiene el valor: "&contador%> Código fuente 80
La variable contador contiene el valor: <%=contador%>
Código fuente 81
Si en nuestro código tenemos diferentes líneas con los delimitadores <%=%> intercaladas dentro de código HTML, para una mayor eficiencia es recomendable sustituirlos por una única línea mediante Response.Write. Además se consigue un código más legible, se debe tender a bloques de HTML y de script de servidor bien diferenciados, siempre que sea posible.
Vamos a realizar una sencilla página que utilizando el método Write, pero a través de la de los delimitadores <%=%>, muestre los valores por defecto que tienen todas las propiedades del objeto Response en nuestro servidor Web.
Response.Buffer: <%=Response.Buffer%><br> Response.Expires: <%=Response.Expires%><br> Response.CacheControl: <%=Response.CacheControl%><br> Response.ExpiresAbsolute: <%=Response.ExpiresAbsolute%><br> Response.IsClientConnected: <%=Response.IsClientConnected%><br> Response.Status: <%=Response.Status%><br> Response.CharSet: <%=Response.CharSet%><br> Response.ContentType: <%=Response.ContentType%><br> Código fuente 82
En mi caso el resultado de la ejecución del Código fuente 82 es el siguiente: Response.Buffer: True Response.Expires: Response.CacheControl: private Response.ExpiresAbsolute: 0:00:00 Response.IsClientConnected: True Response.Status: 200 OK Response.CharSet: Response.ContentType: text/html
Redirect
Este método recibe como parámetro una cadena de texto en forma de URL que especifica la nueva dirección a la que se va a redirigir el navegador del usuario. La URL puede ser absoluta, del tipo www.almagesto.com o del tipo /directorio/pagina.asp, o relativa del tipo pagina.asp. Al lanzar el método Redirect en realidad lo que estamos haciendo es enviar una cabecera HTTP al navegador Web del cliente para indicarle que la página se ha movido y le indicamos la nueva localización, que es la URL que hemos indicado al método Redirect. La información que se envía al navegador es similar a la que se muestra en el Código fuente 83.
HTTP/1.1 Object Moved
Location /directorio/pagina.asp
Como se puede observar la redirección se realiza en el cliente, indicándole que la página se ha movido a una nueva dirección, que en realidad es otra página completamente distinta.
Aquí nos hemos centrado en redireccionar el navegador a otra página (HTML o ASP), pero se puede generalizar diciendo que podemos redireccionar al navegador a cualquier recurso, como puede ser una imagen, un fichero zip, un documento, etc.
AddHeader
Con este método podemos añadir cabeceras de respuesta al protocolo HTTP, así por ejemplo, una llamada al método Response.Redirect "pruebas" se puede sustituir mediante la utilización del método AddHeader que añadirá las cabeceras HTTP correspondientes, y la propiedad Status que indicará el código de estado correspondiente.
<%Response.Status="302 Object Moved"
Response.AddHeader "Location","pruebas.asp"%>
Código fuente 84
Como se puede ver es mucho más claro utilizar el método Redirect.
Al igual que ocurría con la modificación de las propiedades del objeto Response y su método Redirect una llamada al método AddHeader generará un error si ya se ha enviado algún contenido al navegador del cliente, ya que supone realizar un cambio al encabezado HTTP.
AppendToLog
IIS permite habilitar el registro de la actividad en un sitio Web, es decir, las peticiones que realizan los clientes y las respuestas a las mismas.
Con el método AppendToLog podemos añadir al registro del servidor Web Internet Information Server entradas personalizadas. Para poder utilizar este método debemos configurar IIS 5.0 para que registre el acceso al sitio Web correspondiente en el formato de archivo de registro extendido W3C. Esta forma de registro va añadiendo a un fichero de texto con un formato determinado las peticiones que se van realizando y sirviendo. Con AppendToLog se añade una cadena en la última línea del fichero de registro. En el Código fuente 85, se puede ver la utilización de este método. Si vemos el fichero de registro podría tener el contenido que se muestra a continucación.
<%Response.AppendToLog "Esto es una línea en el fichero de registro"%>
Código fuente 85
2000-05-22 10:52:48 192.168.4.41 -
192.168.4.41 80 GET /_vti_inf.html - 200 Mozilla/2.0+(compatible;+MS+FrontPage+3.0)
2000-05-22 10:52:54 192.168.4.41 - 192.168.4.41 80 POST /CursoASP30/_vti_bin/shtml.dll - 200 MSFrontPage/3.0 2000-05-22 10:52:54 192.168.4.41 - 192.168.4.41 80 POST /CursoASP30/_vti_bin/_vti_aut/author.dll - 200 MSFrontPage/3.0 2000-05-22 10:52:55 192.168.4.41 - 192.168.4.41 80 POST /CursoASP30/_vti_bin/_vti_aut/author.dll - 200 MSFrontPage/3.0 2000-05-22 10:53:37 192.168.4.41 - 192.168.4.41 80 POST /CursoASP30/_vti_bin/_vti_aut/author.dll - 200 MSFrontPage/3.0 2000-05-22 10:53:48 192.168.4.41 - 192.168.4.41 80 GET /cursoasp30/add.asp Esto+es+una+línea+en+el+fichero+de+registro 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
BynaryWrite
Este método es utilizado para escribir datos binarios en la respuesta al navegador Web del cleinte. Este método no se suele utilizar, excepto para crear recursos que no son HTML como puede ser para mostrar una imagen que se encuentra almacenada en un campo binario de una base de datos.