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¶m2=value2"
Xojo:
Var socket As New URLConnection Var response As String = socket.SendSync("GET", "https://example.com?param1=value1¶m2=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.