roUrlTransfer
Este objeto se utiliza para leer y escribir en servidores remotos a través de URL. Informa el estado de la transferencia mediante el objeto roUrlEvent object. BrightSign habilita los protocolos http://, https://, ftp://, y file:// . El equivalente en JavaScript es http.
Creación del objeto: Este objeto se crea sin parámetros.
CreateObject("roUrlTransfer")Debe crear una instancia separada de roUrlTransfer para cada recurso que desee leer o escribir.
ifUserData
SetUserData(user_data As Object)
Establece los datos de usuario que se devolverán cuando se generen eventos.
GetUserData() As Object
Devuelve los datos de usuario que se establecieron previamente mediante SetUserData(). Devolverá Inválido si no se ha establecido ningún dato.
ifIdentity
GetIdentity() As Integer
Devuelve un número único que puede utilizarse para identificar cuándo los eventos se originan en este objeto.
La interfaz ifIdentity ha quedado obsoleta. Recomendamos utilizar la interfaz ifUserData en su lugar.
ifMessagePort
SetPort(port As roMessagePort) As Void
Establece el puerto de mensajes al que se enviarán eventos para solicitudes asíncronas.
ifUrlTransfer
EstablecerUrl(URL como cadena) como booleano
Establece la URL para la solicitud de transferencia. Esta función devuelve False en caso de error. Use GetFailureReason para conocer el motivo del error.
AddHeader(name As String, value As String) As Boolean
Agrega el encabezado HTTP especificado. Esto solo es válido para URL HTTP. Esta función devuelve False en caso de error. Use GetFailureReason() para conocer el motivo del error.
GetToString() As String
Se conecta al servicio remoto según lo especificado en la URL y devuelve el cuerpo de la respuesta como una cadena. Esta función no puede devolver un resultado hasta que el intercambio se complete y puede bloquearse durante mucho tiempo. Tener una única cadena de retorno significa que gran parte de la información (encabezados, códigos de respuesta) se ha descartado. Si necesita esta información, puede utilizar AsyncGetToString() en su lugar.
El tamaño de la cadena devuelta está limitado a 65.536 caracteres.
GetToFile(filename As String) As Integer
Se conecta al servicio remoto según lo especificado en la URL y escribe el cuerpo de la respuesta en el archivo especificado. Esta función no devuelve un resultado hasta que el intercambio se complete y puede bloquearse durante mucho tiempo. Se devuelve el código de respuesta del servidor. No es posible acceder a ninguno de los encabezados de respuesta. Si necesita esta información, utilice AsyncGetToFile() en su lugar.
AsyncGetToString() As Boolean
Inicia una solicitud GET a una cadena de forma asíncrona. Los eventos se enviarán al puerto de mensajes asociado con el objeto. Si se devuelve Falso , entonces la solicitud no pudo emitirse y no se entregará ningún evento.
AsyncGetToFile(filename As String) As Boolean
Inicia una solicitud GET a un archivo de forma asíncrona. Los eventos se enviarán al puerto de mensajes asociado con el objeto. Si se devuelve Falso , entonces la solicitud no pudo emitirse y no se entregará ningún evento.
EnableResume(enable As Boolean) As Boolean
Especifica el comportamiento de creación de archivos de los métodos GetToFile() y ASyncGetToFile(). Si este método se establece en Falso (la configuración predeterminada), cada descarga generará un archivo temporal: si la descarga se realiza correctamente, el archivo temporal se renombrará con el nombre de archivo especificado; si la descarga falla, el archivo temporal se eliminará. Si este método se establece en True, el archivo con el nombre de archivo especificado se creará independientemente de si la descarga se realiza correctamente o no; esto permite que la descarga se reanude mediante una llamada posterior a GetToFile() o ASyncGetToFile().
Head() como objeto
Realiza de forma síncrona una solicitud HTTP HEAD y devuelve el código de respuesta y los encabezados resultantes mediante un objeto roUrlEvent. En caso de una falla catastrófica (por ejemplo, una operación asíncrona ya está activa), se devuelve un objeto nulo.
AsyncHead() As Boolean
Inicia una solicitud HTTP HEAD asíncrona. Los eventos se enviarán al puerto de mensajes asociado con el objeto. Si la solicitud no pudo emitirse, el método devolverá Falso y no entregará ningún evento.
PostFromString(request As String) As Integer
Utiliza el método HTTP POST para publicar la cadena proporcionada en la URL actual y devolver el código de respuesta. Cualquier cuerpo de respuesta se descarta.
PostFromFile(filename As String) As Integer
Utiliza el método HTTP POST para publicar el contenido del archivo especificado en la URL actual y luego devolver el código de respuesta. Cualquier cuerpo de respuesta se descarta.
AsyncPostFromString(request As String) As Boolean
Utiliza el método HTTP POST para publicar la cadena proporcionada en la URL actual. Los eventos de tipo roUrlEvent se enviarán al puerto de mensajes asociado con el objeto. Un valor de Falso indica que la solicitud no pudo emitirse y no se entregarán eventos.
AsyncPostFromFile(filename As String) As Boolean Utiliza el método HTTP POST para publicar el contenido del archivo especificado en la URL actual. Los eventos del tipo roUrlEvent se enviarán al puerto de mensajes asociado con el objeto. Un valor de Falso indica que la solicitud no pudo emitirse y no se entregarán eventos.
EstablecerUsuarioYContraseña(usuario As String, contraseña As String) As Boolean
Habilita la autenticación HTTP utilizando el nombre de usuario y la contraseña especificados. Tenga en cuenta que la autenticación básica HTTP está deliberadamente deshabilitada debido a que es inherentemente insegura. La autenticación digest HTTP es compatible.
SetMaximumReceiveBytesPerSecond(bytes_per_second as Double) As Boolean
Limita la velocidad a la que las descargas se realizan mediante la instancia roUrlTransfer. La velocidad de datos de origen no está bajo el control directo del reproductor BrightSign, pero las velocidades de descarga deberían promediar por debajo del valor especificado con el tiempo.
Este método devuelve true en caso de éxito y falso en caso de error. En caso de error, el método GetFailureReason() puede proporcionar más información.
SetMaximumSendBytesPerSecond(bytes_per_second as Double) As Boolean
Limita la velocidad a la que las cargas se realizan mediante la instancia roUrlTransfer.
Este método devuelve verdadero en caso de éxito y falso en caso de error. En caso de error, el método GetFailureReason() puede proporcionar más información.
SetMinimumTransferRate(bytes_per_second As Integer, period_in_seconds As Integer) As Boolean
Hace que la transferencia se termine si la velocidad cae por debajo de bytes_por_segundo cuando se promedia durante period_in_seconds. Tenga en cuenta que si la transferencia se realiza a través de Internet, es posible que no quiera establecer period_in_seconds en un número pequeño en caso de que problemas de red causen caídas temporales en el rendimiento. Para transferencias de archivos grandes y un límite pequeño de bytes_por_segundo, podría ser apropiado promediar durante quince minutos o más.
GetFailureReason() como cadena
Puede proporcionar información adicional si alguno de los métodos de roUrlTransfer indica un error.
SetHeaders(a As Object) As Boolean
AsyncGetToObject(type As String) As Boolean
Inicia una solicitud GET asíncrona y utiliza el contenido para crear un objeto del tipo especificado. Los eventos se enviarán al puerto de mensajes asociado con el objeto. Si este método devuelve False, la solicitud no pudo emitirse y no se entregarán eventos. Los únicos tipos compatibles son roSyncSpec y roXMLElement.
AsyncCancel() As Boolean
Cancela cualquier solicitud asíncrona pendiente en el objeto roURLEvent.
RetainBodyOnError(retener como Boolean) como Boolean
Especifica si se debe devolver el cuerpo de la respuesta cuando hay un código de respuesta de error HTTP. Si retain es true, roUrlTransfer proporciona el cuerpo y los encabezados de la respuesta incluso si el código de estado HTTP indica que ocurrió un error (por ejemplo, un código de estado 4x o 5xx). Si retain es false, roUrlTransfer no proporciona el cuerpo ni los encabezados de la respuesta si el código de estado HTTP indica que ocurrió un error. Este método devuelve Verdadero en caso de éxito y Falso en caso de error. El comportamiento predeterminado de roUrlTransfer es equivalente a pasar Falso al método.
Si RetainBodyOnError() devuelve Falso, llame a GetFailureReason() para obtener detalles.
EnableUnsafeAuthentication(enable As Boolean) As Boolean
Admite autenticación básica HTTP si es Verdadero. La autenticación HTTP utiliza un protocolo inseguro, lo que podría permitir que otros determinen fácilmente la contraseña. El objeto roUrlTransfer seguirá prefiriendo el método digest HTTP más fuerte si es compatible con el servidor. Si este método es Falso (que es la configuración predeterminada), se negará a proporcionar contraseñas mediante autenticación básica HTTP y cualquier solicitud que requiera esta autenticación fallará.
EnableUnsafeProxyAuthentication(enable As Boolean) As Boolean
Admite autenticación HTTP básica contra proxies si es True (lo cual, a diferencia de EnableUnsafeAuthentication(), es la configuración predeterminada). La autenticación HTTP utiliza un protocolo inseguro, lo que podría permitir que otros determinen fácilmente la contraseña. Si este método es False, se negará a proporcionar contraseñas mediante autenticación HTTP básica, y cualquier solicitud que requiera este tipo de autenticación fallará.
EnablePeerVerification(verification As Boolean) As Boolean
Habilita la verificación de certificados TLS/SSL. Este método está configurado en verdadero de forma predeterminada. Deshabilitar la verificación de pares le permite omitir la comprobación de un certificado vencido.
EnableHostVerification(verificación As Boolean) As Boolean
Habilita la verificación del certificado TLS/SSL para el nombre de host correcto. Este método está configurado en verdadero de forma predeterminada. Deshabilitar la verificación de host le permite aceptar un certificado enviado para un nombre de host incorrecto.
La verificación de pares y la verificación de host son comprobaciones de seguridad importantes que previenen ataques de "man-in-the-middle". Estas funciones solo deben deshabilitarse después de considerar cuidadosamente las implicaciones de seguridad.
SetCertificatesFile(filename As String) As Boolean
Configura un conjunto alternativo de certificados CA para la conexión. Este método es útil si los certificados de la conexión están firmados por una CA que no está en la lista de confianza predeterminada (por ejemplo, si su organización utiliza una jerarquía de CA privada que no está firmada por una CA raíz ampliamente conocida). Este método reemplaza la lista predeterminada, por lo que el archivo de certificados proporcionado debe contener todos los certificados CA aceptables requeridos para la conexión.
SetClientCertificate(parameters As roAssociativeArray) As Boolean
Especifica un certificado de cliente HTTPS para utilizar con la autenticación del servidor. Los certificados PKCS#12 no son compatibles. Este método acepta un arreglo asociativo con los siguientes parámetros:
- certificate_file: El nombre de archivo del certificado de cliente
- key_file: El nombre de archivo del archivo de clave. No necesita especificar un archivo de clave si la clave está incrustada en el archivo del certificado de cliente (lo que podría ocurrir al utilizar el formato PEM).
- tipo: Ya sea "PEM" o "DER"
- frase de contraseña: La frase de contraseña de cadena que se utilizará si la clave está cifrada
- obfuscated_passphrase: La frase de contraseña de cadena ofuscada que se utilizará si la clave está cifrada.
Si alguno de los parámetros se configura incorrectamente, probablemente obtendrá un error -35 al realizar una solicitud.
SetCookie(cookie como cadena) como booleano
Agrega la cookie especificada al almacenamiento del reproductor y habilita el motor de análisis/envío de cookies. La cookie puede ser una sola línea en formato Netscape/Mozilla o un encabezado estándar de estilo HTTP (es decir, Set-Cookie:). También puede ejecutar comandos pasando estas cadenas exactas al método:
- "ALL": Borra todas las cookies mantenidas en memoria.
- "SESS": Borra todas las cookies de sesión mantenidas en memoria.
- "RELOAD": Carga todas las cookies desde archivos especificados mediante llamadas a SetCookieFile().
SetCookieFile(filename As String) As Boolean
Agrega cookies al almacenamiento del reproductor utilizando el archivo de cookies especificado y habilita el motor de análisis/envío de cookies. Los datos de cookies pueden estar en formato Netscape/Mozilla o en formato HTTP estándar.
GetCookies() Como roList
Devuelve una lista de cadenas de todas las cookies (incluidas las cookies vencidas).
EnableEncodings(enable As Boolean) As Boolean
Habilita la compresión HTTP, que comunica al servidor que el sistema puede aceptar cualquier codificación que el objeto roUrlTransfer sea capaz de decodificar por sí mismo. Actualmente esto incluye "deflate" y "gzip", que permiten la compresión transparente de las respuestas. Los clientes de la instancia roUrlTransfer ven únicamente los datos decodificados y no saben qué codificación se está utilizando.
La compresión HTTP está habilitada de forma predeterminada en las versiones de firmware 6.0.x y posteriores.
SetUserAndPassword(a As String, b As String) As Boolean
Head() como objeto
Realiza una solicitud HTTP HEAD síncrona y devuelve el código de respuesta y los encabezados resultantes mediante un objeto roURLEvent. En caso de una falla catastrófica (por ejemplo, una operación asíncrona ya está activa), se devuelve un objeto null.
Escape(unescaped As String) As String
Convierte la cadena proporcionada en una cadena codificada para URL. Todos los caracteres que podrían malinterpretarse en un contexto de URL se convierten a la forma %XX .
Unescape(a As String) As String
GetUrl() As String
SetProxy(proxy As String) As Boolean
Establece el nombre o la dirección del servidor proxy que será utilizado por la instancia roUrlTransfer . La cadena del proxy debe tener el siguiente formato: "http://user:password@hostname:port". Puede contener hasta cuatro caracteres "*"; cada carácter "*" puede utilizarse para reemplazar un octeto de la dirección IP actual. Por ejemplo, si la dirección IP es actualmente 192.168.1.2 y el proxy está configurado como "proxy-*-*", entonces el reproductor intentará usar un proxy llamado "proxy-192.168".
SetProxyBypass(hostnames As Array) As Boolean
Exime a los hosts especificados de la configuración del proxy. El array proporcionado debe consistir en uno o más nombres de host. El reproductor intentará acceder directamente a los hosts especificados en lugar de usar el proxy que se ha especificado con el método SetProxy() . Por ejemplo, el nombre de host "http://example.com " eximiría a "http://example.com ", "http://example.com:80 ", y "Example Domain " de la configuración del proxy.
PutFromString(a As String) As Integer
Utiliza el método HTTP PUT para escribir la cadena proporcionada en la URL actual y devolver el código de respuesta. Cualquier cuerpo de respuesta se descarta; use roUrlTransfer.SyncMethod() para recuperar el cuerpo de la respuesta.
SetTimeout(milliseconds As Integer) As Boolean
Finaliza la transferencia si la solicitud tarda más que el número especificado de milisegundos. Tenga en cuenta que esto incluye el tiempo requerido por cualquier búsqueda de nombres, por lo que configurar este valor demasiado bajo causará resultados no deseados. Pasar 0 al método deshabilita el tiempo de espera. Este método devuelve Verdadero en caso de éxito y Falso en caso de error. En caso de fallo, usar el método GetFailureReason() puede proporcionar más información. Si la operación agota el tiempo de espera, el estado devuelto es -28.
SetUserAgent(a As String) As Boolean
PutFromFile(a As String) As Integer
Utiliza el método HTTP PUT para escribir el contenido del archivo especificado en la URL actual y devolver el código de respuesta. Cualquier cuerpo de respuesta se descarta; use roUrlTransfer.SyncMethod() para recuperar el cuerpo de la respuesta.
AsyncPutFromString(a As String) As Boolean
Utiliza el método HTTP PUT para escribir la cadena proporcionada en la URL actual. Los eventos de tipo roUrlEvent se enviarán al puerto de mensajes asociado con el objeto. Un valor de retorno Falso indica que la solicitud no pudo emitirse y que no se entregarán eventos. Cualquier cuerpo de respuesta se descarta; use roUrlTransfer.AsyncMethod para recuperar el cuerpo de la respuesta.
AsyncPutFromFile(a As String) As Boolean
Utiliza el método HTTP PUT para escribir el contenido del archivo especificado en la URL actual. Los eventos de tipo roUrlEvent se enviarán al puerto de mensajes asociado con el objeto. Un valor de retorno False indica que la solicitud no pudo emitirse y que no se entregarán eventos. Cualquier cuerpo de respuesta se descarta; use roUrlTransfer.AsyncMethod() para recuperar el cuerpo de la respuesta.
Delete() As Object
Utiliza el método HTTP DELETE para eliminar el recurso en la URL actual y devolver el código de respuesta. Cualquier cuerpo de respuesta se descarta; use roUrlTransfer.SyncMethod para recuperar el cuerpo de la respuesta.
AsyncDelete() As Boolean
Utiliza el método HTTP DELETE para eliminar el recurso en la URL actual. Los eventos de tipo roUrlEvent se enviarán al puerto de mensajes asociado con el objeto. Un valor de retorno False indica que la solicitud no pudo emitirse y que no se entregarán eventos. Cualquier cuerpo de respuesta se descarta; use roUrlTransfer.AsyncMethod() para recuperar el cuerpo de la respuesta.
ClearHeaders() As Void
Elimina todos los encabezados que se proporcionarían con una solicitud HTTP.
AddHeaders(a As Object) As Boolean
Agrega uno o más encabezados a las solicitudes HTTP. Pase los encabezados a este objeto como un roAssociativeArray de pares nombre/valor. Este método devuelve True en caso de éxito y False en caso de error. Todos los encabezados que se agreguen con este método continuarán enviándose con las solicitudes HTTP hasta que se llame a ClearHeaders() .
SyncMethod(a As Object) As Object
Inicia una solicitud HTTP síncrona utilizando los parámetros especificados (consulte los parámetros descritos para AsyncMethod). Si los parámetros están mal formados, entonces el método devuelve Invalid y llamar a GetFailureReason() puede proporcionar más información; de lo contrario, el método devuelve una instancia de roUrlEvent que contiene los resultados de la solicitud. Puede tardar varios minutos en que una solicitud fallida agote el tiempo de espera y BrightScript permanecerá bloqueado esperando durante ese tiempo, por lo que no se recomienda el uso de este método. El método AsyncMethod no bloquea y debe utilizarse en su lugar.
SetRelativeLinkPrefix(prefix As String) As Boolean
Coloca el prefijo especificado delante de la URL si la URL es relativa. Use este método para convertir fácilmente las URL file:/// en independientes de la unidad.
BindToInterface(interface As Integer) As Boolean
Garantiza que la solicitud solo salga a través de la interfaz de red especificada. De forma predeterminada, la solicitud sale a través de la interfaz de red más apropiada (lo que puede depender de la métrica de enrutamiento configurada mediante roNetworkConfiguration). Tenga en cuenta que si ambas interfaces están en la misma red de capa 2, este método puede no funcionar siempre como se espera debido al modelo de host débil de Linux. El comportamiento predeterminado puede seleccionarse pasando -1 al método. Este método devuelve Falso en caso de error. En este caso, el método GetFailureReason() puede proporcionar más información.
AsyncMethod(parameters As roAssociativeArray) As Boolean
Inicia una solicitud de método HTTP asíncrona utilizando los parámetros especificados (consulte a continuación). Si la solicitud se inicia correctamente, el método devuelve True y entregará un evento. Si la solicitud no pudo iniciarse, entonces el método devuelve False y no entregará un evento. Si esto ocurre, es posible que pueda utilizar el método GetFailureReason() para obtener más información.
Los parámetros se especifican utilizando una instancia de roAssociativeArray que puede contener los siguientes miembros:
Nombre | Tipo | Descripción |
|---|---|---|
method | String | Un método HTTP. Los valores normales incluyen "HEAD", "GET", "POST", "PUT" y "DELETE". Otros valores son compatibles; sin embargo, dependiendo del comportamiento del servidor, es posible que no funcionen como se espera. |
request_body_string | String | Una cadena que contiene el cuerpo de la solicitud. |
request_body_file | String | El nombre de un archivo que contiene el cuerpo de la solicitud |
response_body_string | Boolean | Si se especifica y se establece en True, la respuesta se almacenará en una cadena y se proporcionará mediante el método roUrlEvent.GetString(). |
response_body_file | String | El nombre del archivo que contendrá el cuerpo de la respuesta. El cuerpo se escribe en un archivo temporal y luego se renombra al nombre de archivo especificado si la operación se realiza correctamente. |
response_body_resume_file | String | El nombre del archivo que contendrá el cuerpo de la respuesta. Para una solicitud GET, se envía un encabezado RANGE basado en el tamaño actual del archivo, que se escribe en el lugar en lugar de utilizar un archivo temporal. |
response_body_object | String | Utiliza el cuerpo de la respuesta para crear un objeto del tipo especificado. Consulte la entrada de AsyncGetToObject() para conocer los tipos de objeto compatibles. |
response_pipe | roArray | Utilice una canalización de controladores para procesar el cuerpo de la respuesta a medida que se recibe. Consulte a continuación para obtener más detalles. |
La respuesta roArray para response_pipe consta de una o más instancias de roAssociativeArray que contienen una descripción de filtro (consulte a continuación). El último arreglo asociativo suele ser un filtro de salida.
Nombre | Tipo | Descripción |
|---|---|---|
hash | String | Calcule un hash (digest) de los datos utilizando el algoritmo especificado a medida que pasan por el pipeline. Los hashes compatibles incluyen los siguientes: "CRC32", "MD5", "SHA1", "SHA256", "SHA384", "SHA512". El hash resultante puede recuperarse como una cadena hexadecimal utilizando el método roUrlEvent.GetHash() . |
decompress | String | Descomprima el cuerpo de la respuesta utilizando el algoritmo especificado. Actualmente, el único algoritmo compatible es “gzip”. A menudo es más fácil utilizar un HTTP Content-Encoding en lugar de descomprimir explícitamente el cuerpo. |
prefix_capture | Integer | Capture el número especificado de bytes (entre 1 y 16384) desde el inicio del flujo y almacénelos por separado. Los bytes pueden recuperarse utilizando el método roUrlEvent.GetPrefix() , pero no pueden pasarse a filtros posteriores. |
output file | String | Envíe la salida del pipeline al archivo especificado. La salida se escribe en un archivo temporal y luego se cambia el nombre al nombre de archivo especificado si la operación se realiza correctamente. |
output_string | Boolean | Si se especifica y se establece en True, la respuesta se almacenará en una cadena y se proporcionará mediante el método roUrlEvent.GetString() . |
El siguiente código de ejemplo especifica una matriz de controladores para filtrar el cuerpo de la respuesta de una solicitud HTTP.
url = CreateObject("roUrlTransfer")
pipe = [ { decompress: "gzip"}, { hash: "MD5" }, { output_file: "test.txt" } ]
result = url.AsyncMethod({ method: "GET", response_pipe: pipe })