URLConnection es una clase abstracta cuyas subclases forman el enlace entre la aplicación del usuario y cualquier recurso en la web. Podemos usarlo para leer/escribir desde/hacia cualquier recurso referenciado por un objeto URL. Hay principalmente dos subclases que amplían la clase URLConnection
- HttpURLConnection: si nos conectamos a cualquier URL que use «http» como protocolo, entonces se usa la clase HttpURLConnection.
- JarURLConnection: Sin embargo, si estamos tratando de establecer una conexión a un archivo jar en la web, entonces se utiliza JarURLConnection.
Una vez que se establece la conexión y tenemos un objeto URLConnection, podemos usarlo para leer o escribir u obtener más información sobre cuándo se modificó por última vez la página/archivo, la longitud del contenido, etc.
Pero apenas obtener la información del estado no es el verdadero motivo de una aplicación del mundo real. Nuestro objetivo es recuperar la información, procesarla y enviar los resultados al servidor, o simplemente mostrar la información requerida recuperada del servidor.
Ilustración:
Aplicación a pequeña escala que solicita el nombre de una película al usuario y, a su vez, devuelve la calificación «IMDb» de la película o devuelve todos los enlaces relacionados con esa película. Todo esto se puede lograr utilizando la clase URLConnection.
Métodos de la clase URLConnection
Método | Acción realizada |
---|---|
obtener el contenido() | Recupera el contenido de URLConnection |
getContentEncoding() | Devuelve el valor del campo de encabezado de codificación de contenido. |
getContentLength() | Devuelve la longitud del campo de encabezado de contenido |
obtener la fecha() | Devuelve el valor de la fecha en el campo de encabezado |
getHeaderFields() | Devuelve el mapa que contiene los valores de varios campos de encabezado en el encabezado HTTP |
getHeaderField(int i) | Devuelve el valor del i -ésimo índice del encabezado |
getHeaderField(campo de string) | Devuelve el valor del campo denominado «campo» en el encabezado |
getInputStream() | Devuelve el flujo de entrada a esta conexión abierta dentro de la clase OutputStream |
getOutputStream() | Devuelve el flujo de salida a esta conexión de la clase OutputStream |
abrirConexión() | Abre la conexión a la URL especificada. |
setAllowUserInteraction() | Establecer esto como verdadero significa que un usuario puede interactuar con la página. El valor por defecto es verdadero. |
setDefaultUseCaches() | Establece el valor predeterminado del campo useCache como el valor dado. |
setDoInput() | Establece si el usuario puede tomar entrada o no |
setDoOutput() | Establece si el usuario puede escribir en la página. El valor predeterminado es falso ya que la mayoría de las URL no permiten escribir |
Ahora, después de comprender los métodos Pasos involucrados en el proceso anterior
- Creación de URL: cree un objeto de URL utilizando cualquiera de los constructores dados
- Crear objeto: invoque la llamada openConnection() para crear el objeto de URLConnection.
- Mostrar el contenido: use el objeto creado anteriormente para mostrar la información sobre el recurso o para leer/escribir el contenido del archivo en la consola usando bufferedReader e InputStream de la conexión abierta usando el método getInputStream().
- Cerrar flujo: cierre el flujo de entrada cuando haya terminado.
Implementación: veamos un programa de muestra, que utiliza los métodos anteriores para mostrar los campos de encabezado y también imprimir el código fuente de toda la página en la ventana de la consola.
Java
// Java Program to Illustrate Reading and Writing // in URLConnection Class // Importing required classes import java.io.*; import java.net.*; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; // Class // URLConnectionclass class GFG { // main driver method public static void main(String[] args) { // Try block to check for exceptions try { // Fetching URL by creating URL url = new URL( "https://www.geeksforgeeks.org/java"); // Opening the connection to the above URL URLConnection urlcon = url.openConnection(); // Executing the below line would print the // value of // Allow User Interaction field. // System.out.println(urlcon.getAllowUserInteraction()); // Executing the below line would print // the value of Content Type field. // System.out.println(urlcon.getContentType()); // Executing the below line would print the // value // of URL of the given connection. // System.out.println(urlcon.getURL()); // Executing the below line would // print the value of Do Input field. // System.out.println(urlcon.getDoInput()); // Executing the below line would // print the value of Do Output field. // System.out.println(urlcon.getDoOutput()); // Executing the below line would // print the value of Last Modified field. // System.out.println(new // Date(urlcon.getLastModified())); // Executing the below line would // print the value of Content Encoding field. // System.out.println(urlcon.getContentEncoding()); // To get a map of all the fields of http header Map<String, List<String> > header = urlcon.getHeaderFields(); // Printing all the fields along with their // value for (Map.Entry<String, List<String> > mp : header.entrySet()) { System.out.print(mp.getKey() + " : "); System.out.println( mp.getValue().toString()); } System.out.println(); System.out.println( "Complete source code of the URL is-"); System.out.println( "---------------------------------"); // Getting the inputstream of the open // connection BufferedReader br = new BufferedReader(new InputStreamReader( urlcon.getInputStream())); String i; // Printing the source code line by line while ((i = br.readLine()) != null) { System.out.println(i); } } // Catch block to handle exceptions catch (Exception e) { // Displaying exceptions System.out.println(e); } } }
Producción:
Keep-Alive : [timeout=5, max=100] null : [HTTP/1.1 200 OK] Server : [Apache/2.4.18 (Ubuntu)] Connection : [Keep-Alive] Last-Modified : [Wed, 16 Nov 2016 06:49:55 GMT] Date : [Wed, 16 Nov 2016 10:58:34 GMT] Accept-Ranges : [bytes] Cache-Control : [max-age=3] ETag : ["10866-541657b07e4d7"] Vary : [Accept-Encoding] Expires : [Wed, 16 Nov 2016 10:58:37 GMT] Content-Length : [67686] Content-Type : Complete source code of the URL is- -------------------------------------------------- ...source code of the page...
Este artículo es una contribución de Rishabh Mahrsee . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA