Java - Processamento de URL

URL significa Uniform Resource Locator e representa um recurso na World Wide Web, como uma página da Web ou diretório FTP.

Esta seção mostra como escrever programas Java que se comunicam com um URL. Um URL pode ser dividido em partes, da seguinte forma -

protocol://host:port/path?query#ref

Exemplos de protocolos incluem HTTP, HTTPS, FTP e Arquivo. O caminho também é conhecido como nome de arquivo e o host também é chamado de autoridade.

O seguinte é um URL para uma página da web cujo protocolo é HTTP -

https://www.amrood.com/index.htm?language=en#j2se

Observe que este URL não especifica uma porta; nesse caso, a porta padrão para o protocolo é usada. Com HTTP, a porta padrão é 80.

Construtores

o java.net.URL classe representa um URL e possui um conjunto completo de métodos para manipular URL em Java.

A classe URL possui vários construtores para a criação de URLs, incluindo o seguinte -

Sr. Não. Construtores e descrição
1

public URL(String protocol, String host, int port, String file) throws MalformedURLException

Cria um URL reunindo as partes fornecidas.

2

public URL(String protocol, String host, String file) throws MalformedURLException

Idêntico ao construtor anterior, exceto que a porta padrão para o protocolo fornecido é usada.

3

public URL(String url) throws MalformedURLException

Cria um URL a partir da String fornecida.

4

public URL(URL context, String url) throws MalformedURLException

Cria um URL analisando os argumentos URL e String.

A classe URL contém muitos métodos para acessar as várias partes da URL que está sendo representada. Alguns dos métodos da classe URL incluem o seguinte -

Sr. Não. Método e Descrição
1

public String getPath()

Retorna o caminho do URL.

2

public String getQuery()

Retorna a parte da consulta do URL.

3

public String getAuthority()

Retorna a autoridade do URL.

4

public int getPort()

Retorna a porta do URL.

5

public int getDefaultPort()

Retorna a porta padrão para o protocolo do URL.

6

public String getProtocol()

Retorna o protocolo do URL.

7

public String getHost()

Retorna o host do URL.

8

public String getHost()

Retorna o host do URL.

9

public String getFile()

Retorna o nome do arquivo do URL.

10

public String getRef()

Retorna a parte de referência do URL.

11

public URLConnection openConnection() throws IOException

Abre uma conexão com a URL, permitindo que um cliente se comunique com o recurso.

Exemplo

O programa URLDemo a seguir demonstra as várias partes de um URL. Um URL é inserido na linha de comando e o programa URLDemo produz cada parte do URL fornecido.

// 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();
      }
   }
}

Uma execução de amostra deste programa produzirá o seguinte resultado -

Resultado

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 classe URLConnections

O método openConnection () retorna um java.net.URLConnection, uma classe abstrata cujas subclasses representam os vários tipos de conexões de URL.

Por exemplo -

  • Se você se conectar a uma URL cujo protocolo é HTTP, o método openConnection () retorna um objeto HttpURLConnection.

  • Se você se conectar a um URL que representa um arquivo JAR, o método openConnection () retorna um objeto JarURLConnection, etc.

A classe URLConnection tem muitos métodos para definir ou determinar informações sobre a conexão, incluindo o seguinte -

Sr. Não. Método e Descrição
1

Object getContent()

Recupera o conteúdo desta conexão de URL.

2

Object getContent(Class[] classes)

Recupera o conteúdo desta conexão de URL.

3

String getContentEncoding()

Retorna o valor do campo de cabeçalho de codificação de conteúdo.

4

int getContentLength()

Retorna o valor do campo de cabeçalho de comprimento do conteúdo.

5

String getContentType()

Retorna o valor do campo de cabeçalho do tipo de conteúdo.

6

int getLastModified()

Retorna o valor do campo de cabeçalho modificado pela última vez.

7

long getExpiration()

Retorna o valor do campo de cabeçalho expirado.

8

long getIfModifiedSince()

Retorna o valor do campo ifModifiedSince deste objeto.

9

public void setDoInput(boolean input)

Transmite verdadeiro para denotar que a conexão será usada para entrada. O valor padrão é true porque os clientes normalmente leem de um URLConnection.

10

public void setDoOutput(boolean output)

Transmite true para denotar que a conexão será usada para saída. O valor padrão é false porque muitos tipos de URLs não suportam gravação.

11

public InputStream getInputStream() throws IOException

Retorna o fluxo de entrada da conexão URL para leitura do recurso.

12

public OutputStream getOutputStream() throws IOException

Retorna o fluxo de saída da conexão de URL para gravar no recurso.

13

public URL getURL()

Retorna o URL ao qual este objeto URLConnection está conectado.

Exemplo

O programa URLConnectionDemo a seguir se conecta a um URL inserido na linha de comando.

Se a URL representa um recurso HTTP, a conexão é convertida em HttpURLConnection e os dados no recurso são lidos uma linha por 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();
      }
   }
}

Uma execução de amostra deste programa produzirá o seguinte resultado -

Resultado

$ java URLConnDemo

.....a complete HTML content of home page of amrood.com.....