HTTPRequest
A continuación se listan los métodos de la clase HTTPRequest. La lista contiene valores correspondientes a la siguiente petición HTTP de ejemplo:
GET /foo/bar?key1=value&KEY2=value2 HTTP/1.1
Host: localhost:8080
Accept: text/xml, application/xml,application/xhtml+xml,text/html;q=0.9
Accept: text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Línea de arranque
request_line"GET /foo/bar?key1=value&KEY2=value2 HTTP/1.1\r\n"
request_method"GET"
unparsed_uri"/foo/bar?key1=value&KEY2=value2"
http_version"HTTPVersion.new("1.1")". Si en la línea de petición no aparece el protocolo HTTP se considera que es HTTP 0.9
URI de la petición
request_uri::URI::parse("http://localhost:8080/foo/bar?key1=value&KEY2=value2")
host"localhost"
port"8080"
path"/foo/bar"
query_string"key1=value&KEY2=value"
script_name"/bar"
path_info"/foo"
Cabecera y cuerpo
raw_header
[ "Host: localhost:8080", "Accept: text/xml, application/xml,application/xhtml+xml,text/html;q=0.9", "Accept: text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1", "Accept-Encoding: gzip,deflate", "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7", "Keep-Alive: 300", "Connection: keep-alive" ]
headerHash donde las claves son el nombre de las cabeceras. Los nombres de las cabeceras están en minúsculas. Si existen varias cabeceras con el mismo nombre sus valores se agrupan en un array.
El resultado de request['ACCEPT'] es request.header['ACCEPT'.downcase].join(", ")
each
Ejecuta el bloque que se le pasa para cada par clave/valor del hash de cabeceras (header). e.g.
req.each{|key, value| puts "#{key}= #{value}"}
keep_aliveToma el valor true si la cabecera "connection" no toma el valor close y la petición utiliza el protocolo HTTP 1.1
keep_alive?Alias de keep_alive
cookies
Array que contiene objetos de la clase Cookie, cada uno de los cuales representa una cookie enviada por el usuario. Éstos no se copian automáticamente a un objeto de la clase HTTPResponse.
query
{"key1"=>"value1", "KEY2"=>"value2"}. Hash con los parámetros de la petición, la parte del valor son objetos de la clase FormData que es simplemente una subclase de String. Esto sólo es importante en el caso de que se tengan claves duplicadas en los parámetros de la petición.
body
Objeto de la clase String con el cuerpo de la petición. Siempre es nil excepto si el método de la petición es POST o PUT.
Varios.
userEste campo toma valor sólo si se está utilizando autenticación.
addrDirección local del socket que esta recibiendo las peticiones. e.g. ["AF_INET", 8080, "jfglez", "127.0.0.1"].
peeraddrLa dirección del cliente. e.g. ["AF_INET", 37934, "jfglez", "127.0.0.1"].
attributesTODAVÍA NO.
request_time
Un objeto de la clase Time con la hora en la que se realizó la petición.
meta_varsHash con las meta-variables CGI. La especificación del CGI contiene una lista con estas meta-variables.
HTTPUtils::FormData
La clase FormData deriva de la clase String. Se utiliza para representar los valores de los parámetros de una petición. Una petición puede tener una clave con múltiples valores. Cada valor se asigna a un objeto de la clase FormData. Cada objeto de la clase guarda una referencia al siguiente objeto FormaData que contiene el siguiente valor y así sucesivamente.
each_dataEjecuta el bloque que se le pasa para cada uno de los valores de los parámetros.
list
Agrupa los valores en un Array.
HTTPResponse
Muchos de los métodos de HTTPResponse son llamados por WEBrick después de que el servlet haya dado servicio a la petición. En vez de listar todos los métodos públicos como se hizo para la clase HTTPRequest, a continuación sólo se presentan aquellos que tienen sentido dentro del contexto de los servlets.
status=Para definir el status de la respuesta con este método. e.g. resp.status= 202.
[]=Para definir las cabeceras que se considere oportuno. e.g. resp['content-type']= 'text/html'
body=Para definir el cuerpo de la respuesta. También puede
ser un objeto IO en cuyo caso el
contendido se transmite por bloques.
set_redirectEnvía una respuesta redirigiéndola a la URI dada, e.g. resp.set_redirect(HTTPStatus::MovedPermanently, 'http://www.google.com').
cookiesArray con objetos de la clase
Cookie que se enviarán al
cliente. Inicialmente el array está vacío ya que las Cookies
que se reciben del cliente no se copian automáticamente aquí.
CookienameEl nombre de la cookie. Éste sólo se puede leer no se puede modificar.
valueEl valor de la cookie. Debe estar en una codificación ASCII imprimible.
versionIdentifica la especificación que sigue la cookie. 0, que es el valor por defecto, identifica las cookies de Netscape, 1 para aquellas que siguen la RFC 2109.
domainEl dominio para el cual la cookie es válida.Un dominio especificado explícitamente debe comenzar siempre con punto.
expiresUn objeto de la clase Time o
String que representa el momento en
el cual expirará la cookie. Debe seguir el siguiente
formato:
DiaSem, DD-Mes-AAAA HH:MM:SS
max_ageEl tiempo de vida de la cookie en segundos desde el momento en que se envió. Un valor de cero indica que la cookie debe descartarse enseguida.
commentPermite al servidor origen de la cookie documentar su utilización. El usuario puede inspeccionar esta información y decidir si iniciar o continuar la sesión con esta cookie.
pathSubconjunto de la URL a la que se aplica esta cookie.
secureCuando es true, la cookie sólo se puede devolver bajo una conexión segura.
HTTPStatusTabla 3. Modulo HTTPStatus
| Clase padre | Código de respuesta | Nombre de la clase |
|---|---|---|
| Info | 100 | Continue |
| 101 | SwitchingProtocols | |
| Success | 200 | OK |
| 201 | Created | |
| 202 | Accepted | |
| 203 | NonAuthoritativeInformation | |
| 204 | NoContent | |
| 205 | ResetContent | |
| 206 | PartialContent | |
| Redirect | 300 | MultipleChoices |
| 301 | MovedPermanently | |
| 302 | Found | |
| 303 | SeeOther | |
| 304 | NotModified | |
| 305 | UseProxy | |
| 307 | TemporaryRedirect | |
| ClientError | 400 | BadRequest |
| 401 | Unahthorized | |
| 402 | PaymentRequired | |
| 403 | Forbidden | |
| 404 | NotFound | |
| 405 | MethodNotAllowed | |
| 406 | NotAcceptable | |
| 407 | ProxyAuthenticationRequired | |
| 408 | RequestTimeout | |
| 409 | Conflict | |
| 410 | Gone | |
| 411 | LengthRequired | |
| 412 | PreconditionFailed | |
| 413 | RequestEntityTooLarge | |
| 414 | RequestURITooLarge | |
| 415 | UnsupportedMediaType | |
| 416 | RequestRangeNotSatisfiable | |
| 417 | ExpectationFailed | |
| ServerError | 500 | InternalServerError |
| 501 | NotImplemented | |
| 502 | BadGateway | |
| 503 | ServiceUnavailable | |
| 504 | GatewayTimeout | |
| 505 | HTTPVersionNotSupported |