Peticiones HTTP sin esfuerzo en Xojo: Cómo usar Curl en Xojo con URLConnection

A continuación encontrarás traducido al castellano el artículo escrito por Gabriel Ludosanu y publicado originalmente en el Blog de Xojo.

Estás creando una fantástica aplicación en Xojo que necesita conectar a internet, obtener datos de sitios web o bien enviar información a servicios web. Aquí es donde las peticiones HTTP entran en juego. Es el lenguaje que ha de utilizar tu aplicación para hablar con la web.

Si estás familiarizado con la herramienta curl en la línea de comando probablemente te preguntes como puedes utilizar las opciones equivalentes en Xojo de forma eficaz. Curl es una herramienta tremendamente potente que, entre otras cosas, permite realizar peticiones HTTP, pero no siempre es la opción más conveniente cuando se trata de trabajar con aplicaciones gráficas como Xojo.

¡En estos casos es donde URLConnection brilla! proporciona una forma simple y elegante de realizar peticiones HTTP directamente desde tu código Xojo, facilitando así el uso de las equivalencias de Curl desde Xojo.

En este artículo aprenderás como adaptar los comandos de Curl en el uso de la clase URLConnection desde Xojo. ¡Empecemos!:

Petición GET básica usando Curl en Xojo

Significado: Obtener el contenido de la URL indicada utilizando una petición GET.

Curl:

curl https://example.com

Xojo:

Var socket As New URLConnection
Var response As String = socket.SendSync("GET", "https://example.com", 30)

Petición GET Con parámetros

Significado: Obtener los contenidos de la URL especificada con los parámetros indicados.

Curl:

curl "https://example.com?param1=value1&param2=value2"

Xojo:

Var socket As New URLConnection
Var response As String = socket.SendSync("GET", "https://example.com?param1=value1&param2=value2", 30)

O bien:

Var socket As New URLConnection

// Define los parámetros adicionales mediante Pair
Var queryParams() As Pair
queryParams.Add("param1" : "value1")
queryParams.Add("param2" : "value2")

// Crea el URL con los parámetros adicionales
Var baseURL As String = "https://example.com"
Var queryString As String = "?"

For Each param As Pair In queryParams
queryString = queryString + param.Left + "=" + param.Right + "&"
Next

// Elimina el caracter '&' final
queryString = queryString.Left(queryString.Length - 1)

// Combina el URL base y la cadena de parámetros
Var fullURL As String = baseURL + queryString

Var response As String = socket.SendSync("GET", fullURL, 30)

Añadir Cabeceras

Significado: Envía una petición GET con una cabecera personalizada.

Curl:

curl -H "Content-Type: application/json" https://example.com

Xojo:

Var socket As New URLConnection
socket.RequestHeader("Content-Type") = "application/json"
Var response As String = socket.SendSync("GET", "https://example.com", 30)

Enviar datos JSON con POST

Significado: Enviar una petición POST con datos JSON a un URL determinado.

Curl:

curl -L 'http://example.com' ^
-H 'Content-Type: application/json' ^
-d '{"key1":"value1","key2":"value2"}'

Xojo:

Var socket As New URLConnection
Var jsonData As String = "{""key1"":""value1"",""key2"":""value2""}"
socket.SetRequestContent(jsonData, "application/json")
Var response As String = socket.SendSync("POST", "https://example.com", 30)

O bien:

Var socket As New URLConnection
// Crea un nuevo JSONItem
Var json As New JSONItem

// Añade pares clave-valor al JSONItem
json.Value("key1") = "value1"
json.Value("key2") = "value2"

socket.SetRequestContent(json.ToString, "application/json")
Var response As String = socket.SendSync("POST", "https://example.com", 30)

Autenticación Básica

Significado: Enviar una petición GET con autenticación básica.

Curl:

curl -u username:password http://example.com

Xojo:

Var socket As New URLConnection
socket.RequestHeader("Authorization") = "Basic " + EncodeBase64("username:password")
Var response As String = socket.SendSync("GET", "https://example.com", 30)

Descargar un archivo

Significado: Descargar un archivo desde la URL indicada y guardarlo con el nombre de archivo especificado.

Curl:

curl -o filename https://example.com/file.zip

Xojo:

Var socket As New URLConnection
Var outputFile As FolderItem = SpecialFolder.Desktop.Child("file.zip")
socket.SendSync("GET", "https://example.com/file.zip", outputFile, 30)

Métodos de Petición Personalizados

Significado: Enviar una petición DELETE al URL indicado (puedes sustituir DELETE con cualquier otro método requerido, como por ejem,plo PUT, PATCH…)

Curl:

curl -X DELETE https://example.com/resource

Xojo:

Var socket As New URLConnection
Var response As String = socket.SendSync("DELETE", "https://example.com/resource", 30)

Tal y como has visto, mediante el uso de la clase URLConnection en Xojo puedes emplear la funcionalidad que ya conocías de la herramienta de la línea de comandos Curl en un abrir y cerrar de ojos.

Tanto si se trata de obtener datos, enviar o recibir paquetes JSON, o bien descargar archivos, los ejemplos proporcionados en este tutorial suponen los fundamentos a la hora de integrar servicios web en tus aplicaciones Xojo. A medida que continúes experimentando con URLConnection, descubrirás nuevas formas de mejorar tus proyectos y tu flujo de trabajo.

Si has encontrado este tutorial de ayuda, te animo a que lo compartas con tus colegas desarrolladores.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *