Solucións ás practicas con URL
Ir a la navegación
Ir a la búsqueda
Enunciado 2
Escribe un programa que garde o contido dunha URL nun ficheiro chamado paxina.html.
1 import java.net.*;
2 import java.io.*;
3
4 class EscribirFicheiroTexto {
5
6 public static void main(String[] args) {
7 String cadena;
8 String sFicheiro = "paxina.html";
9 File ficheiro = new File(sFicheiro);
10
11 if (ficheiro.exists()) {
12 System.out.println("O ficheiro " + sFicheiro + " xa existe!");
13 } else {
14 try {
15 // Créase un obxecto de tipo URL
16 URL url = new URL("https://www.cifprodolfoucha.es");
17
18 // Ábrese unha conexión hacia esa URL que devolverá unha canle de entrada pola cal poderá ler todo o que chegue
19 BufferedReader paxinaHtml = new BufferedReader(new InputStreamReader(url.openStream()));
20 BufferedWriter bw = new BufferedWriter(new FileWriter(sFicheiro));
21
22 // Leese e preséntase o contido do ficheiro en pantalla liña a líña
23 while ((cadena = paxinaHtml.readLine()) != null) {
24 bw.write(cadena + "\r\n");
25 }
26 System.out.println("Ficheiro creado correctamente");
27 try {
28 paxinaHtml.close();
29 bw.close();
30 } catch (IOException e) {
31 e.printStackTrace();
32 System.out.println("Excepción na entrada e saída ó pechar o ficheiro!");
33 }
34 } catch (UnknownHostException e) {
35 e.printStackTrace();
36 System.out.println("Debes estar conectado para que isto funcione ben!");
37 } catch (MalformedURLException e) {
38 e.printStackTrace();
39 System.out.println("Esa URL non está ben formada!");
40 } catch (IOException e) {
41 e.printStackTrace();
42 System.out.println("Excepción na entrada e saída!");
43 }
44 }
45 }
Posibles alternativas/melloras:
- Poderías personalizalo para que:
- pregunte o nome de ficheiro co que se almacenará a web
- en caso de que exista o ficheiro, posibilite sobreescribir our darlle outro nome
- pregunte qué paxina web queremos descargar
Enunciado 3
Escribe un programa que descargue unha imaxe a partir da súa URL.
1 import java.io.FileOutputStream;
2 import java.io.InputStream;
3 import java.net.URL;
4 import java.net.URLConnection;
5
6 public class DescargarImaxeAFicheiro {
7
8 public static void main(String[] args) {
9 try {
10 // Url coa foto
11 URL url = new URL("https://www.cifprodolfoucha.es/wp-content/uploads/2021/01/logo-RUP.png");
12
13 // establecemos conexion
14 URLConnection urlCon = url.openConnection();
15
16 // sacamos por pantalla o tipo de ficheiro
17 System.out.println(urlCon.getContentType());
18
19 // obtense o inputStream da foto web e ábrese o ficheiro local.
20 InputStream is = urlCon.getInputStream();
21 FileOutputStream fos = new FileOutputStream("foto.jpg");
22
23 // lectura da foto da web e escritura en ficheiro local
24 byte[] array = new byte[1000]; // buffer temporal de lectura
25 int leido = is.read(array);
26 while (leido > 0) {
27 fos.write(array, 0, leido);
28 leido = is.read(array);
29 }
30
31 // peche de conexion e ficheiro.
32 is.close();
33 fos.close();
34 } catch (Exception e) {
35 e.printStackTrace();
36 }
37 }
38 }
Posibles alternativas/melloras:
- Poderías personalizalo para que:
- pregunte o nome de ficheiro co que se almacenará a foto
- en caso de que exista o ficheiro, posibilite sobreescribir our darlle outro nome
- pregunte a URL de qué imaxe queremos descargar
Enunciado 4
Crea unha URLConnection utilizando o método openConnection() dun obxecto URL. Despois utilízao para:
- examinar as propiedades. Por exemplo o valor do campo:
- date da cabecera
- content-type da cabecera (ou nulo de é descoñecido)
- expires da cabecera
- last-modified da cabecera (se non o tratas, o resultado é o número de milisegundos desde o 1 de xaneiro de 1970 GMT)
- amosar os contidos do documento
1 import java.io.IOException;
2 import java.io.InputStream;
3 import java.net.URL;
4 import java.net.URLConnection;
5
6 public class oMeuURLConnection {
7
8 public static void main(String[] args) throws IOException {
9 URL exemplo = new URL("https", "www.oracle.com", 443, "/");
10 //URL exemplo = new URL("https://www.oracle.com/");
11
12 URLConnection exemploCon = exemplo.openConnection();
13
14 System.out.println("Data: " + exemploCon.getDate());
15 System.out.println("Tipo: " + exemploCon.getContentType());
16 System.out.println("Expiracion: " + exemploCon.getExpiration());
17 System.out.println("Última modificacion: " + exemploCon.getLastModified());
18
19 System.out.println("== CONTIDO ==");
20
21 InputStream stream = exemploCon.getInputStream();
22
23 int i;
24 while ((i = stream.read()) != -1) {
25 System.out.print((char) i);
26 }
27 }
28 }
O programa establece unha conexión HTTP co nodo local a través do porto 443 e solicita o / (o documento por omisión, habitualmente index.html). A continuación enumeranse os valores da cabecera e finalmente recupérase o contido.