# VResponse

VResponse es un objeto javascript que representa una respuesta para una petición realizada a través de web a Velneo vModApache.

theResponse se crea automáticamente para cada petición realizada, y permite acceder a la respuesta para definirla.

Con ayuda de la clase [VRequest](https://doc.velneo.com/33/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest), podremos obtener la información de la petición.

De esta forma podemos gestionar de forma dinámica las peticiones web en un servidor Apache con Velneo vModApache.

## Indice de funciones

### **De cabecera**

String [header](#header)( String szHeader )

Array [headerKeys](#headerkeys)()

void [setHeader](#setheader)( String szHeader, String szValue )

### **De contenido**

String [contentType](#contenttype)()

void [setContentType](#setcontenttype)( String szContentType )

### **De cuerpo**

String [body](#body)()

VByteArray [rawBody](#vbytearray-rawbody)()

void [setBody](#setbody)( String szBody )

void [setRawBody](#setrawbody)( VByteArray body )

### **De estado**

void [setStatus](#setstatus)( Number nStatus )

Number [status](#status)()

## Documentación de funciones

### Funciones de cabecera

#### String header( String szHeader ) <a href="#header" id="header"></a>

Devuelve el valor de una cabecera cuyo nombre indicamos como parámetro.

Parámetros:

* szHeader: cadena con el nombre de la cabecera.

#### Array headerKeys() <a href="#headerkeys" id="headerkeys"></a>

Devuelve un array de cadenas con el nombre de las cabeceras obtenidas de la respuesta.

#### void setHeader( String szHeader, String szValue ) <a href="#setheader" id="setheader"></a>

Establece un valor para la cabecera que indicamos como parámetro.

Parámetros:

* szHeader: cadena con el nombre de la cabecera cuyo valor vamos a establecer.
* szValor: cadena con el valor para la cabecera.

### Funciones de contenido

#### String contentType() <a href="#contenttype" id="contenttype"></a>

Devuelve tipo de contenido de la respuesta.

#### void setContentType( String szContentType ) <a href="#setcontenttype" id="setcontenttype"></a>

Establece para la respuesta el tipo de contenido que indicamos como parámetro.

Parámetros:

* szContentType: cadena con el tipo de parámetro que definimos para la respuesta.

### Funciones de cuerpo

#### String body() <a href="#body" id="body"></a>

Devuelve el contenido del cuerpo de la respuesta.

#### VByteArray rawBody()

Devuelve el contenido del cuerpo en formato binario, es decir, un [VByteArray](https://doc.velneo.com/33/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray).

#### void setBody( String szBody ) <a href="#setbody" id="setbody"></a>

Establece el cuerpo de la respuesta con la cadena que indicamos como parámetro.

Parámetros:

* szBody: cadena para definir el contenido del cuerpo de la respuesta.

#### void setRawBody( VByteArray body ) <a href="#setrawbody" id="setrawbody"></a>

Establece el cuerpo de la respuesta con contenido del objeto de la clase [VByteArray](https://doc.velneo.com/33/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray) que indicamos como parámetro.

Parámetros:

* body: objeto de la clase [VByteArray](https://doc.velneo.com/33/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray) que incluye el binario que queremos establecer como cuerpo del envío.

### Funciones de estado

#### void setStatus( Number nStatus ) <a href="#setstatus" id="setstatus"></a>

Establece el estado de la respuesta con el valor que indicamos como parámetro.

Parámetros:

* nStatus: entero que define el estado de la respuesta.

Cuando se le pasa a Apache un status distinto del 200 **es Apache quien decide qué mensaje devolver**. En el enlace siguiente encontrarás los códigos de estado y lo que Apache devuelve:

<https://ci.apache.org/projects/httpd/trunk/doxygen/group__HTTP__Status.html>

Si quieres configurar respuestas personalizadas, además de pasar el status, hay que configurarlo también en Apache, según se indica en el siguiente enlace:

<https://httpd.apache.org/docs/2.4/es/custom-error.html>

#### Number status() <a href="#status" id="status"></a>

Devuelve el valor del estado de la respuesta.

## Ejemplo

### Ejemplo de manejo de binarios

```javascript
// Creamos el objeto de la clase VByteArray para recibir el cuerpo binario
var baBody= new VByteArray;

// Obtenemos el cuerpo binario
baBody = theRequest.rawBody();

// Procesamos lo obtenido
var length = baBody.length;
var firstChar = baBody[0];
```
