|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Java leggere html
e possibile leggere una pagina html?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Leggerla nel senso di scaricarla da internet come testo non formattato, sì. Leggerla nel senso di visualizzarla come testo stilizzato, con immagini collegamenti eccetera, nì.
Nì perchè pur avendo la piattaforma standard delle API dedicate alle proiezione di pagine HTML, la versione di HTML che supportano è paleolitica. La soluzione sta nel cercare delle librerie java che visualizzino pagine in HTML "moderno", usare JDIC (sono della API) per integrare il browser html di sistema in un'interfaccia grafica o creare delle librerie che leggano l'HTML attuale. L'ultima soluzione richiede giusto quei dieci-quindicimila anni di lavoro...
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Una cosa del genere:
Codice:
import java.io.*;
import java.net.*;
public static void downloadFromUrl (URL url, String filename, String userAgent)
throws IOException
{
InputStream is = null;
FileOutputStream fos = null;
try
{
URLConnection urlConn = url.openConnection ();
urlConn.setRequestProperty ("User-Agent", userAgent);
is = urlConn.getInputStream ();
fos = new FileOutputStream (filename);
byte[] buffer = new byte[1024];
int len;
while ((len = is.read (buffer)) > 0)
fos.write (buffer, 0, len);
}
finally
{
if (is != null)
is.close ();
if (fos != null)
fos.close ();
}
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il finally ha qualcosa che non va. E perchè non usare i canali negli esempio in cui si creano dei buffer. Siamo moderni, suvvia!
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
mi sto confondendo |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il sistema di andbin va benissimo, usa quello se ti è chiaro.
Se noti, andbin ha messo le istruzioni che chiudono i flussi in un blocco finally. La forma: Codice:
try {
fai qualcosa
} finally {
qualcos'altro
}
Ha fatto quello che tutti dovrebbero sempre fare. A mio sommesso avviso l'intoppo sta nel fatto che il suo blocco finally contiene due istruzioni: is.close() e fos.close() Se l'esecuzione di is.close() genera un'eccezione allora fos.close() non sarà eseguita. La forma coerente con le intenzioni è una bruttura necessaria: Codice:
try {
} finally {
try {
is.close();
} finally {
fos.close();
}
}
Codice:
try {
} finally {
disposeStreams(is, fos);
}
Ma solo perchè andbin ha avuto l'accortezza di dichiarare il rilascio dell'eccezione IOException. Altrimenti ci sarebbero stati pure i catch.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
a okKk credo di aver capito il tuo ragionamento |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
probblemino:
-prima cosa ho creato un file.txt nella cartella del progetto poi: Classe Main Codice:
package tvlist;
import java.net.URL;
/**
*
* @author edpsam
*/
public class Main {
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Gestione g = new Gestione();
url = "http://www.google.it";
filename = "file.txt";
userAgentm = "CIAO";
g.getPagina(url, userAgentm, userAgentm);
}
private URL url;
private String filename;
private static String userAgentm;
}
Classe: Gestione Codice:
package tvlist;
import java.io.*;
import java.net.*;
/**
*
* @author edpsam
*/
public class Gestione {
public Gestione() {
}
public void getPagina(URL url, String filename, String userAgent) throws IOException{
InputStream is = null;
FileOutputStream fos = null;
try
{
URLConnection urlConn = url.openConnection ();
urlConn.setRequestProperty ("User-Agent", userAgent);
is = urlConn.getInputStream ();
fos = new FileOutputStream (filename);
byte[] buffer = new byte[1024];
int len;
while ((len = is.read (buffer)) > 0)
fos.write (buffer, 0, len);
}
finally
{
if (is != null)
is.close ();
if (fos != null)
fos.close ();
}
}
}
PS: cos'è user agent? |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Se ti riferisci al fatto che se is.close() lancia una eccezione, fos.close() non viene eseguito, allora hai perfettamente, ancora una volta, ragione!
È che ho sempre dubbi su quale sia il modo migliore per trattare le eccezioni sui close(). A uno potrebbe anche non fregargliene nulla .... C'è poi un'altra cosa: se una read o write lancia una eccezione e nel finally una close lancia a sua volta una eccezione, il metodo ha una nuova "ragione" di uscita, che "sovrascrive" l'eccezione originale della read/write che invece potrebbe (o dovrebbe?) essere più importante. Perché non li conosco ancora bene Dammi tempo! Prima fammi prendere sta SCJP (ho già avuto il voucher per l'esame
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
no dai mi dite plase xche dichiaro male? |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Lo "user agent", detto in generale, è una applicazione client che utilizza il networking per accedere a un qualche servizio di rete (e tipicamente si riferisce al web). La stringa di uno user agent è semplicemente una riga di testo che contiene informazioni sul tipo/versione del browser ed eventualmente altre informazioni su S.O. ecc... http://it.wikipedia.org/wiki/User_agent http://en.wikipedia.org/wiki/User_agent
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
haa ok thx
cmq quel URL url vuol dire che dichiaro una variabile di nome url di tipo URL... ma cos'è il tipo URL? |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Beh, non ti chiedo che cosa sono le asserzioni, le annotazioni, i wildcard nei generics o cosa sono i metodi "bridge", perché sono cose abbastanza avanzate .... però le questioni su visibilità dei membri, uso di this/super, ecc... sono veramente le basi .....
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
ma nn ho capito bene se devo creare una classe URL? o basta che mi estendo? |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
URL url = new URL ("http://www.pippo.com");
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
mmm ecco quando uno e gnubbo è gnubbo -.-''
Thx cmq |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:19.




















