Java: procesamiento de URL
URL significa Localizador uniforme de recursos y representa un recurso en la World Wide Web, como una página web o un directorio FTP.
Esta sección le muestra cómo escribir programas Java que se comunican con una URL. Una URL se puede dividir en partes, de la siguiente manera:
protocol://host:port/path?query#ref
Los ejemplos de protocolos incluyen HTTP, HTTPS, FTP y Archivo. La ruta también se denomina nombre de archivo y el host también se denomina autoridad.
La siguiente es una URL a una página web cuyo protocolo es HTTP:
https://www.amrood.com/index.htm?language=en#j2se
Tenga en cuenta que esta URL no especifica un puerto, en cuyo caso se utiliza el puerto predeterminado para el protocolo. Con HTTP, el puerto predeterminado es 80.
Constructores
los java.net.URL La clase representa una URL y tiene un conjunto completo de métodos para manipular la URL en Java.
La clase de URL tiene varios constructores para crear URL, incluidos los siguientes:
No Señor. | Constructores y descripción |
---|---|
1 | public URL(String protocol, String host, int port, String file) throws MalformedURLException Crea una URL juntando las partes dadas. |
2 | public URL(String protocol, String host, String file) throws MalformedURLException Idéntico al constructor anterior, excepto que se usa el puerto predeterminado para el protocolo dado. |
3 | public URL(String url) throws MalformedURLException Crea una URL a partir de la cadena dada. |
4 | public URL(URL context, String url) throws MalformedURLException Crea una URL analizando juntos la URL y los argumentos de cadena. |
La clase de URL contiene muchos métodos para acceder a las distintas partes de la URL que se representa. Algunos de los métodos de la clase URL incluyen los siguientes:
No Señor. | Método y descripción |
---|---|
1 | public String getPath() Devuelve la ruta de la URL. |
2 | public String getQuery() Devuelve la parte de la consulta de la URL. |
3 | public String getAuthority() Devuelve la autoridad de la URL. |
4 | public int getPort() Devuelve el puerto de la URL. |
5 | public int getDefaultPort() Devuelve el puerto predeterminado para el protocolo de la URL. |
6 | public String getProtocol() Devuelve el protocolo de la URL. |
7 | public String getHost() Devuelve el host de la URL. |
8 | public String getHost() Devuelve el host de la URL. |
9 | public String getFile() Devuelve el nombre de archivo de la URL. |
10 | public String getRef() Devuelve la parte de referencia de la URL. |
11 | public URLConnection openConnection() throws IOException Abre una conexión a la URL, lo que permite que un cliente se comunique con el recurso. |
Ejemplo
El siguiente programa URLDemo demuestra las distintas partes de una URL. Se ingresa una URL en la línea de comando y el programa URLDemo genera cada parte de la URL dada.
// File Name : URLDemo.java
import java.net.*;
import java.io.*;
public class URLDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.amrood.com/index.htm?language=en#j2se");
System.out.println("URL is " + url.toString());
System.out.println("protocol is " + url.getProtocol());
System.out.println("authority is " + url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is " + url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Una ejecución de muestra de este programa producirá el siguiente resultado:
Salida
URL is https://www.amrood.com/index.htm?language=en#j2se
protocol is http
authority is www.amrood.com
file name is /index.htm?language=en
host is www.amrood.com
path is /index.htm
port is -1
default port is 80
query is language=en
ref is j2se
Métodos de clase URLConnections
El método openConnection () devuelve un java.net.URLConnection, una clase abstracta cuyas subclases representan los diversos tipos de conexiones URL.
Por ejemplo
Si se conecta a una URL cuyo protocolo es HTTP, el método openConnection () devuelve un objeto HttpURLConnection.
Si se conecta a una URL que representa un archivo JAR, el método openConnection () devuelve un objeto JarURLConnection, etc.
La clase URLConnection tiene muchos métodos para configurar o determinar información sobre la conexión, incluidos los siguientes:
No Señor. | Método y descripción |
---|---|
1 | Object getContent() Recupera el contenido de esta conexión URL. |
2 | Object getContent(Class[] classes) Recupera el contenido de esta conexión URL. |
3 | String getContentEncoding() Devuelve el valor del campo de encabezado de codificación de contenido. |
4 | int getContentLength() Devuelve el valor del campo de encabezado de longitud del contenido. |
5 | String getContentType() Devuelve el valor del campo de encabezado de tipo de contenido. |
6 | int getLastModified() Devuelve el valor del campo de encabezado modificado por última vez. |
7 | long getExpiration() Devuelve el valor del campo de encabezado caducado. |
8 | long getIfModifiedSince() Devuelve el valor del campo ifModifiedSince de este objeto. |
9 | public void setDoInput(boolean input) Pasa verdadero para indicar que la conexión se utilizará para la entrada. El valor predeterminado es verdadero porque los clientes normalmente leen desde una URLConnection. |
10 | public void setDoOutput(boolean output) Pasa verdadero para indicar que la conexión se utilizará para la salida. El valor predeterminado es falso porque muchos tipos de URL no admiten la escritura. |
11 | public InputStream getInputStream() throws IOException Devuelve el flujo de entrada de la conexión URL para leer del recurso. |
12 | public OutputStream getOutputStream() throws IOException Devuelve el flujo de salida de la conexión URL para escribir en el recurso. |
13 | public URL getURL() Devuelve la URL a la que está conectado este objeto URLConnection. |
Ejemplo
El siguiente programa URLConnectionDemo se conecta a una URL ingresada desde la línea de comando.
Si la URL representa un recurso HTTP, la conexión se transmite a HttpURLConnection y los datos del recurso se leen una línea a la vez.
// File Name : URLConnDemo.java
import java.net.*;
import java.io.*;
public class URLConnDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.amrood.com");
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = null;
if(urlConnection instanceof HttpURLConnection) {
connection = (HttpURLConnection) urlConnection;
}else {
System.out.println("Please enter an HTTP URL.");
return;
}
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String urlString = "";
String current;
while((current = in.readLine()) != null) {
urlString += current;
}
System.out.println(urlString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Una ejecución de muestra de este programa producirá el siguiente resultado:
Salida
$ java URLConnDemo
.....a complete HTML content of home page of amrood.com.....