Diferencia entre revisiones de «Solucións ás practicas con URL»
Ir a la navegación
Ir a la búsqueda
(Página creada con «= Enuciado 2 = <syntaxhighlight lang="java" line enclose="div" highlight="" > import java.net.*; import java.io.*; class EscribirFicheroTexto { public static void mai…») |
|||
| (No se muestran 11 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
| − | = | + | = Enunciado 2 = |
| + | Escribe un programa que garde o contido dunha URL nun ficheiro chamado paxina.html. | ||
| + | |||
<syntaxhighlight lang="java" line enclose="div" highlight="" > | <syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
import java.net.*; | import java.net.*; | ||
import java.io.*; | import java.io.*; | ||
| − | class | + | class EscribirFicheiroTexto { |
public static void main(String[] args) { | public static void main(String[] args) { | ||
String cadena; | String cadena; | ||
| − | String | + | String sFicheiro = "paxina.html"; |
| − | File | + | File ficheiro = new File(sFicheiro); |
| − | if ( | + | if (ficheiro.exists()) { |
| − | System.out.println("O ficheiro " + | + | System.out.println("O ficheiro " + sFicheiro + " xa existe!"); |
} else { | } else { | ||
try { | try { | ||
| Línea 19: | Línea 21: | ||
// Ábrese unha conexión hacia esa URL que devolverá unha canle de entrada pola cal poderá ler todo o que chegue | // Ábrese unha conexión hacia esa URL que devolverá unha canle de entrada pola cal poderá ler todo o que chegue | ||
| − | BufferedReader | + | BufferedReader paxinaHtml = new BufferedReader(new InputStreamReader(url.openStream())); |
| − | BufferedWriter bw = new BufferedWriter(new FileWriter( | + | BufferedWriter bw = new BufferedWriter(new FileWriter(sFicheiro)); |
| − | // Leese e preséntase o | + | // Leese e preséntase o contido do ficheiro en pantalla liña a líña |
| − | while ((cadena = | + | while ((cadena = paxinaHtml.readLine()) != null) { |
bw.write(cadena + "\r\n"); | bw.write(cadena + "\r\n"); | ||
} | } | ||
| − | System.out.println(" | + | System.out.println("Ficheiro creado correctamente"); |
try { | try { | ||
| − | + | paxinaHtml.close(); | |
bw.close(); | bw.close(); | ||
} catch (IOException e) { | } catch (IOException e) { | ||
| Línea 53: | Línea 55: | ||
:* en caso de que exista o ficheiro, posibilite sobreescribir our darlle outro nome | :* en caso de que exista o ficheiro, posibilite sobreescribir our darlle outro nome | ||
:* pregunte qué paxina web queremos descargar | :* pregunte qué paxina web queremos descargar | ||
| + | |||
| + | = Enunciado 3 = | ||
| + | Escribe un programa que descargue unha imaxe a partir da súa URL. | ||
| + | |||
| + | <syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
| + | import java.io.FileOutputStream; | ||
| + | import java.io.InputStream; | ||
| + | import java.net.URL; | ||
| + | import java.net.URLConnection; | ||
| + | |||
| + | public class DescargarImaxeAFicheiro { | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | try { | ||
| + | // Url coa foto | ||
| + | URL url = new URL("https://www.cifprodolfoucha.es/wp-content/uploads/2021/01/logo-RUP.png"); | ||
| + | |||
| + | // establecemos conexion | ||
| + | URLConnection urlCon = url.openConnection(); | ||
| + | |||
| + | // sacamos por pantalla o tipo de ficheiro | ||
| + | System.out.println(urlCon.getContentType()); | ||
| + | |||
| + | // obtense o inputStream da foto web e ábrese o ficheiro local. | ||
| + | InputStream is = urlCon.getInputStream(); | ||
| + | FileOutputStream fos = new FileOutputStream("foto.jpg"); | ||
| + | |||
| + | // lectura da foto da web e escritura en ficheiro local | ||
| + | byte[] array = new byte[1000]; // buffer temporal de lectura | ||
| + | int leido = is.read(array); | ||
| + | while (leido > 0) { | ||
| + | fos.write(array, 0, leido); | ||
| + | leido = is.read(array); | ||
| + | } | ||
| + | |||
| + | // peche de conexion e ficheiro. | ||
| + | is.close(); | ||
| + | fos.close(); | ||
| + | } catch (Exception e) { | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | 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 | ||
| + | |||
| + | <syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
| + | import java.io.IOException; | ||
| + | import java.io.InputStream; | ||
| + | import java.net.URL; | ||
| + | import java.net.URLConnection; | ||
| + | |||
| + | public class oMeuURLConnection { | ||
| + | |||
| + | public static void main(String[] args) throws IOException { | ||
| + | URL exemplo = new URL("https", "www.oracle.com", 443, "/"); | ||
| + | //URL exemplo = new URL("https://www.oracle.com/"); | ||
| + | |||
| + | URLConnection exemploCon = exemplo.openConnection(); | ||
| + | |||
| + | System.out.println("Data: " + exemploCon.getDate()); | ||
| + | System.out.println("Tipo: " + exemploCon.getContentType()); | ||
| + | System.out.println("Expiracion: " + exemploCon.getExpiration()); | ||
| + | System.out.println("Última modificacion: " + exemploCon.getLastModified()); | ||
| + | |||
| + | System.out.println("== CONTIDO =="); | ||
| + | |||
| + | InputStream stream = exemploCon.getInputStream(); | ||
| + | |||
| + | int i; | ||
| + | while ((i = stream.read()) != -1) { | ||
| + | System.out.print((char) i); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | 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. | ||
Revisión actual del 22:49 13 nov 2021
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.