---
title: roHttpServer
slug: develop/es/rohttpserver
docTags: 
createdAt: 2025-03-11T07:07:18.732Z
---

Este objeto permite el procesamiento de solicitudes RESTful HTTP/HTTPS desde URL remotas al servidor web integrado del reproductor BrightSign. Muchas de las solicitudes se proporcionan al script como objetos *roHttpEvent* para su manejo. El equivalente en JavaScript es Node.js.

Creación del objeto: El objeto *roHttpServer* se crea con un *roAssociativeArray*.

```text
CreateObject("roHttpServer", parameters As roAssociativeArray)
```

El array asociativo puede contener los siguientes parámetros:

- `puerto` <font color="#6B21A8">int</font>: El número de puerto del servidor web integrado
- `https` <font color="#6B21A8">roAssociativeArray</font>: Un conjunto de parámetros de configuración HTTPS:
  - `key_file` <font color="#6B21A8">string</font>: El nombre de un archivo que contiene la clave privada en formato PEM. Si no se pasan ni `frase de contraseña` ni `obfuscated_passphrase` , entonces el archivo de clave debe estar sin cifrar.
  - `certificate_file` <font color="#6B21A8">string</font>: El nombre de un archivo que contiene el certificado en formato PEM
  - `frase de contraseña` <font color="#6B21A8">string</font>: La frase de contraseña para descifrar el archivo de clave
  - `obfuscated_passphrase` <font color="#6B21A8">string</font>: La frase de contraseña ofuscada para descifrar el archivo de clave. Contacte con [support@brightsign.biz](mailto\:support@brightsign.biz) para obtener más información sobre cómo generar una clave para la ofuscación y almacenarla en el reproductor.
- `bind_to_interface` <font color="#6B21A8">string</font> o <font color="#6B21A8">int</font>: Acepte conexiones únicamente en la interfaz de red especificada. Se prefiere usar un nombre de interfaz de tipo string (p. ej., “eth0” para Ethernet, “wlan0” para WiFi, “lo” para loopback). Se admite un entero para compatibilidad con versiones anteriores con `0` para Ethernet, `1` para WiFi y `32767` para loopback. Esto está disponible a partir de BOS 9.1.92.

:::hint{type="info"}
Si la clave y el certificado están contenidos en un solo archivo, puede pasarse como `certificate_file` (y `key_file` puede omitirse).
:::

Ejemplo

```text
 server = CreateObject("roHttpServer", { port: 443, https: { certificate_file: "cert.pem", passphrase: "sekrit" } })
```

## ifHttpServer

Cada método controlador “Add” descrito a continuación toma un array asociativo como parámetro. Los valores en el array asociativo especifican cómo se comporta el controlador. Consulte la tabla al final de esta sección para ver los pares comunes de `clave:valor` .

### GetFailureReason() As String

Proporciona información útil adicional si falla un método *roHttpServer*.

### AddGetFromString(parameters As roAssociativeArray) As Boolean

Hace que cualquier solicitud HTTP GET para la ruta URL especificada se responda directamente con el contenido del miembro "body" del array asociativo de parámetros. El tipo MIME (y potencialmente el conjunto de caracteres completo) debe especificarse si se espera que la solicitud provenga de un navegador web. La solicitud se maneja completamente dentro del método *roHttpServer*; no se envían eventos al puerto de mensajes.

### AddGetFromFile(parameters As roAssociativeArray) As Boolean

Hace que cualquier solicitud HTTP GET para la ruta URL especificada se responda directamente desde el archivo especificado. Siempre debe especificar el tipo MIME (y posiblemente el conjunto de caracteres) si espera que la solicitud provenga de un navegador web. La solicitud se maneja completamente dentro del método *roHttpServer*; no se envían eventos al puerto de mensajes.

### AddGetFromFolder(parameters As roAssociativeArray) As Boolean

Construye un controlador dinámico que sirve archivos estáticos, los cuales aparecerán como elementos secundarios de la carpeta de almacenamiento definida. Este método acepta un array asociativo con los siguientes parámetros:

- `carpeta`: La ruta de archivo de la carpeta que actuará como el directorio raíz del servidor. Si este parámetro no está presente, se servirá todo el contenido del dispositivo de almacenamiento.
- `url_prefix`: El prefijo de URL bajo el cual se servirán los archivos. Si este parámetro está ausente, la URL coincidirá desde la raíz.
- `filtros`: Un arreglo de filtros. Cada filtro es un arreglo asociativo con los siguientes parámetros. Tenga en cuenta que si los parámetros "re" y "ext" están ausentes, el filtro coincidirá con todo:
  - `re`: La expresión regular para hacer coincidir con la URL de la solicitud.
  - `ext`: La extensión para hacer coincidir con el archivo hoja de la URL de la solicitud.
  - `encabezados` : Un arreglo asociativo que contiene encabezados arbitrarios para incluirse con la respuesta automática.
  - `content_type` : El contenido del encabezado "Content-Type" incluido con la respuesta automática. Esto no puede establecerse en el mismo filtro que los encabezados. El tipo MIME y el conjunto de caracteres pueden especificarse juntos `(p. ej., "text/plain; charset=utf-8")` .

Debe definir todos los tipos de contenido de la carpeta para que la carpeta se cargue correctamente en el servidor. Por ejemplo:

```text
mimeTypes = [{ext: ".html", content_type:"text/html;charset=utf-8"},{ext: ".js", content_type:"text/javascript;charset=utf-8"},{ext: ".css", content_type:"text/css;charset=utf-8"},{ext: ".png", content_type:"image/png"},{ext: ".otf", content_type:"font/otf"}]

server.AddGetFromFolder({ url_prefix: "/GetFolder", folder: "Example", filters: mimeTypes})
```

### AddGetFromEvent(parameters As roAssociativeArray) As Boolean

Solicita que se envíe un evento de tipo *roHttpEvent* al puerto de mensajes configurado. Esto ocurre cuando se realiza una solicitud HTTP GET para la ruta URL especificada.

### AddPostToString(parameters As roAssociativeArray) As Boolean

Solicita que se envíe un evento de tipo *roHttpEvent* al puerto de mensajes configurado. Esto ocurre cuando se realiza una solicitud HTTP POST para la ruta URL especificada. Use el método *roHttpEvent.GetRequestBodyString()* para recuperar el cuerpo publicado.

### AddPostToFile(parameters As roAssociativeArray) As Boolean

Solicita que, cuando se realice una solicitud HTTP POST a la ruta URL especificada, el cuerpo de la solicitud se almacene en un archivo temporal de acuerdo con el valor `parameters["destination_directory"]` en el arreglo asociativo. Cuando esta solicitud se completa, se envía un evento *roHttpEvent* al puerto de mensajes configurado. Use el método *roHttpEvent.GetRequestBodyFile()* para recuperar el nombre del archivo temporal. Si el archivo todavía existe en el momento en que se envía la respuesta, se eliminará automáticamente. Sin embargo, si el reproductor se reinicia o pierde energía durante el proceso POST, el archivo no se eliminará. Por esta razón, recomendamos usar un subdirectorio dedicado como `"destination_directory"` y limpiar este subdirectorio durante el inicio (usando `DeleteDirectory()`) antes de agregar controladores que hagan referencia a él.

### AddPostToFormData(parameters As roAssociativeArray) As Boolean

Solicita que, cuando se realice una solicitud HTTP POST a la ruta URL especificada, se intente almacenar los datos del formulario (pasados como `application/x-www-form-urlencoded` o `multipart/form-data`) en un arreglo asociativo que puede recuperarse llamando al método *roHttpEvent.GetFormData()* .

### AddMethodFromEvent(parameters As roAssociativeArray) As Boolean

Solicita que se envíe un evento de tipo *roHttpEvent* al puerto de mensajes configurado. A diferencia de `AddGetFromEvent()`, este método puede admitir métodos HTTP arbitrarios. El método HTTP se especifica usando el miembro method en el arreglo asociativo.

### AddMethodToFile(parameters As roAssociativeArray) As Boolean

Solicita que, cuando se realice una solicitud HTTP arbitraria a la ruta URL especificada, el cuerpo de la solicitud se almacene en un archivo temporal de acuerdo con el valor `parameters["destination_directory"]` en el arreglo asociativo. El método HTTP se especifica usando el miembro `método` en el arreglo asociativo. Cuando la solicitud se completa, se envía un evento *roHttpEvent* al puerto de mensajes configurado. Use el método *roHttpEvent.GetRequestBodyFile()* para recuperar el nombre del archivo temporal. Si el archivo todavía existe en el momento en que se envía la respuesta, se eliminará automáticamente.

### AddMethodToString(parameters As roAssociativeArray) As Boolean

Intenta admitir un método HTTP arbitrario. El cuerpo de la solicitud se coloca en una cadena y se genera un evento. Esto hace que el cuerpo de la solicitud esté disponible mediante el método *roHttpEvent.GetRequestBodyString()* . Se puede enviar una respuesta de la misma manera que el método `AddGetToEvent()` .

### SetupDWSLink(title As String) As Boolean

Genera una pestaña en el [Servidor web de diagnóstico (DWS)](docId\:qXt4YHey7IEj_M9dH73wM) que enlaza directamente a la base \<ip\_address\:port> de la instancia *roHttpServer* . La cadena pasada especifica el título de la pestaña.

Ejemplo

```text
server1.SetupDWSLink("My AWS Link")
server2.SetupDWSLink("My Other AWS Link")
```

### Parámetros para los métodos del controlador "Add" 

La siguiente tabla describe pares clave\:valor comunes para los métodos del controlador "Add":

| **Nombre**              | **Se aplica a**                                                                              | **Valor**                                                                                                                                                                                                                                                                     |
| ----------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| url\_path               | Todos                                                                                        | La ruta para la que se utilizará el método del controlador                                                                                                                                                                                                                    |
| user\_data              | AddGetFromEvent()<br /><br />AddPostToString()<br />AddPostToFile()<br />AddMethodToString() | Un valor definido por el usuario que puede recuperarse llamando a *roHttpEvent.GetUserData()*                                                                                                                                                                                 |
| method                  | AddMethodFromEvent()<br />AddMethodToFile()                                                  | El método HTTP asociado con el *roHttpEvent* generado. El tipo de método puede recuperarse luego usando *roHttpEvent.GetMethod()*.                                                                                                                                            |
| passwords               | Todos                                                                                        | Un arreglo asociativo que contiene una asignación entre nombres de usuario y contraseñas                                                                                                                                                                                      |
| auth                    | Todos                                                                                        | El tipo de autenticación que se utilizará cuando se establezcan contraseñas. Este valor puede ser "basic" o "digest". El valor predeterminado es “digest” si no se especifica.                                                                                                |
| realm                   | Todos                                                                                        | El dominio de autenticación, que los navegadores web mostrarán al solicitar un nombre de usuario y una contraseña                                                                                                                                                             |
| headers                 | AddGetFromFile()                                                                             | Un arreglo asociativo que contiene encabezados arbitrarios que se incluirán con la respuesta automatizada                                                                                                                                                                     |
| content\_type           | AddGetFromFile()                                                                             | El contenido del encabezado "Content-Type" que se incluye con la respuesta automatizada. Esto no puede establecerse al mismo tiempo que el miembro headers. Puede establecer tanto el tipo MIME como el juego de caracteres juntos (por ejemplo, "text/plain; charset=utf-8") |
| body                    | AddGetFromString()                                                                           | El cuerpo de la respuesta                                                                                                                                                                                                                                                     |
| nombre de archivo       | AddGetFromFile()                                                                             | La ruta al archivo utilizado para el cuerpo de la respuesta.                                                                                                                                                                                                                  |
| directorio\_de\_destino | AddPostToFile()                                                                              | La ruta al directorio utilizado para el archivo temporal que contiene el cuerpo de la solicitud. Se generará automáticamente un nombre de archivo aleatorio.                                                                                                                  |

## ifMessagePort

### SetPort(port As roMessagePort)

Publica mensajes de tipo *roHttpEvent*  en el puerto de mensajes adjunto.
