Para poder acceder a un recurso remoto a través de internet deberemos utilizar sockets. Pero para ello, debemos de disponer de una IP o un nombre de dominio, debemos montar la URL y sus parámetros de una forma correcta, debemos eliminar los caracteres especiales (empezando por el espacio), controlar los headers, ….
Disponemos de la clase URL que nos resuelve la complejidad de las rutas, y que nos permite conectarnos a un recurso remoto de una forma transparente
Sockets trabaja sin tener en cuenta esquemas (protocolos), con lo que nos obliga a crear todo el diálogo que podamos necesitar.
Si vamos a trabajar con esquemas del tipo http, https, o ftp, nos es más interesante un objeto que ya conozca sus características. El protocolo http, por ejemplo, incorpora gran cantidad de headers, que pueden ser necesarios; por ejemplo muchos sitios en Internet están controlando el navegador que se conecta a ellos, por lo que puede ser necesario, indicar el “Agente” que lo hace; entonces, debemos utilizar la clase URLConnection, para poder establecer las características de la conexión.
Y si la conexión se hace a una dirección con esquema http, entonces disponemos de la clase HttpURLConnection y HttpsURLconnection, ambas clases heredan de URLConnection y se especializan en los esquemas http y https respectivamente. Podemos hacer:
Lo único que hemos necesitado es hacer un cast a URLConnection ya que lo que nos estaba devolviendo realmente openConnection era un HttpURLConnection.
Nos devolvía HttpURLConnection porque la url era http://……, por lo que sería conveniente antes de hacer un cast así, utilizar instanceOf para asegurarnos que lo hacemos bien