Procesamiento de URL en Java
URL (Uniform Resource Locator), cuyo nombre en chino es Localizador Uniforme de Recursos, a veces también se le conoce coloquialmente como dirección web. Representa recursos en Internet, como páginas web o direcciones FTP.
En este capítulo presentaremos cómo Java maneja las URL. Una URL se puede dividir en las siguientes partes.
protocol://host:port/path?query#fragment
El protocolo (protocol) puede ser HTTP, HTTPS, FTP y File; port es el número de puerto; path es la ruta del archivo y el nombre del archivo.
Un ejemplo de URL con protocolo HTTP es el siguiente:
http://www.example.com/index.html?language=cn#j2se
Análisis de la URL:
- El protocolo es (protocol):http
- El host es (host:port):www.example.com
- El número de puerto es (port):80. El ejemplo de URL anterior no especifica el puerto porque el puerto predeterminado del protocolo HTTP es 80.
- La ruta del archivo es (path):/index.html
- Parámetros de solicitud (query):language=cn
- Ubicación del fragmento (fragment):j2se, se ubica en la posición del elemento HTML cuyo atributo id es j2se en la página web.
Métodos de la clase URL
La clase URL se define en el paquete java.net, y se utiliza para manejar contenido relacionado con URL. A continuación se presenta por separado la creación y el uso de la clase URL.
java.net.URL proporciona diversas formas de construir URL, y se pueden obtener recursos a través de java.net.URL.
| No. | Descripción del método |
|---|---|
| 1 | public URL(String protocol, String host, int port, String file) throws MalformedURLException. Crea una URL mediante los parámetros dados (protocolo, nombre de host, número de puerto, nombre de archivo). |
| 2 | public URL(String protocol, String host, String file) throws MalformedURLException Crea una URL usando el protocolo, nombre de host y nombre de archivo especificados; el puerto usa el puerto predeterminado del protocolo. |
| 3 | public URL(String url) throws MalformedURLException Crea una URL a partir de una cadena de URL dada. |
| 4 | public URL(URL context, String url) throws MalformedURLException Crea usando una URL base y una URL relativa. |
La clase URL contiene muchos métodos para acceder a las distintas partes de la URL. Los métodos específicos y sus descripciones son los siguientes:
| No. | Descripción del método |
|---|---|
| 1 | public String getPath() Devuelve la parte de la ruta de la URL. |
| 2 | public String getQuery() Devuelve la parte de consulta de la URL. |
| 3 | public String getAuthority() Obtiene la parte de autoridad de esta URL. |
| 4 | public int getPort() Devuelve la parte del puerto de la URL. |
| 5 | public int getDefaultPort() Devuelve el número de puerto predeterminado del protocolo. |
| 6 | public String getProtocol() Devuelve el protocolo de la URL. |
| 7 | public String getHost() Devuelve el host de la URL. |
| 8 | public String getFile() Devuelve la parte del nombre de archivo de la URL. |
| 9 | public String getRef() Obtiene el ancla de esta URL (también llamada "referencia"). |
| 10 | public URLConnection openConnection() throws IOException Abre una conexión URL y permite que el cliente acceda al recurso. |
Ejemplo
El ejemplo anterior demuestra el uso de la clase URL de java.net para obtener los parámetros de las distintas partes de la URL:
URLDemo.java
El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:
URL 为:http://www.example.com/index.html?language=cn#j2se 协议为:http 验证信息:www.example.com 文件名及请求参数:/index.html?language=cn 主机名:www.example.com 路径:/index.html 端口:-1 默认端口:80 请求参数:language=cn 定位位置:j2se
Métodos de la clase URLConnections
openConnection() devuelve un java.net.URLConnection.
Por ejemplo:
Si conectas a una URL con protocolo HTTP, el método openConnection() devuelve un objeto HttpURLConnection.
Si la URL a la que te conectas es un archivo JAR, el método openConnection() devolverá un objeto JarURLConnection.
etc.
La lista de métodos de URLConnection es la siguiente:
| No. | Descripción del método |
|---|---|
| 1 | Object getContent() Recupera el contenido del enlace URL. |
| 2 | Object getContent(Class[] classes) Recupera el contenido del enlace URL. |
| 3 | String getContentEncoding() Devuelve el valor del campo content-encoding de la cabecera. |
| 4 | int getContentLength() Devuelve el valor del campo content-length de la cabecera. |
| 5 | String getContentType() Devuelve el valor del campo content-type de la cabecera. |
| 6 | int getLastModified() Devuelve el valor del campo last-modified de la cabecera. |
| 7 | long getExpiration() Devuelve el valor del campo expires de la cabecera. |
| 8 | long getIfModifiedSince() Devuelve el valor del campo ifModifiedSince del objeto. |
| 9 | public void setDoInput(boolean input) Una conexión URL se puede utilizar para entrada y/o salida. Si se planea usar la conexión URL para entrada, se establece el indicador DoInput en true; si no se planea usar, se establece en false. El valor predeterminado es true. |
| 10 | public void setDoOutput(boolean output) Una conexión URL se puede utilizar para entrada y/o salida. Si se planea usar la conexión URL para salida, se establece el indicador DoOutput en true; si no se planea usar, se establece en false. El valor predeterminado es false. |
| 11 | public InputStream getInputStream() throws IOException Devuelve el flujo de entrada de la URL, utilizado para leer recursos. |
| 12 | public OutputStream getOutputStream() throws IOException Devuelve el flujo de salida de la URL, utilizado para escribir recursos. |
| 13 | public URL getURL() Devuelve la URL a la que está conectado el objeto URLConnection. |
Ejemplo
En el siguiente ejemplo, la URL utiliza el protocolo HTTP. openConnection devuelve un objeto HttpURLConnection.
URLConnDemo.java
El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:
$ javac URLConnDemo.java $ java URLConnDemo .....这里会输出Ejemplo首页(http://www.example.com)的 HTML 内容.....Otras extensiones