|
- Come scaricare un file da Internet - |
|||
| COSA SERVE PER QUESTO TUTORIAL | |||
| Download | Chiedi sul FORUM | Glossario | Conoscenze basilari di Visual Basic .Net - un compilatore per VB .Net | ||
| In pochi passi come ottenere in una stringa il responso di una richiesta HTTP | |||
L'OGGETTO SYSTEM.NET.WEBCLIENT Oggetto che permette di interagire col Web via HTTP Il framework .Net mette a disposizione un oggetto che permette di accedere con molta semplicità a contenuti on-line via HTTP dato l'URL. Questo oggetto si trova all'interno dello spazio di nomi System.Net e si chiama WebClient. Vediamo come si può scaricare il responso di un URL (nel formato, ad esempio http://www.arcadiaclub.com/programmazione.htm):
Class DownloadURL
Public Sub New()
Dim wbcDownloader As New System.Net.WebClient() 'Creiamo l'oggetto WebClient
'Dichiariamo un array di Byte dove verrà copiato i dati ricevuti
Dim bytDatiRicevuti As Byte()
'Eseguiamo la richiesta HTTP
bytDatiRicevuti = wbcDownloader.DownloadData("http://www.arcadiaclub.com/programmazione.htm")
Dim strRisultato As String
'Trasferiamo tutti i Byte in una stringa con la codifica latin-1
strRisultato = System.Text.Encoding.GetEncoding("iso-8859-1").GetString(bytDatiRicevuti)
MsgBox(strRisultato)
End Sub
End Class
Attraverso la funzione DownloadData dell'oggetto WebClient possiamo
ottenere sincronamente il responso della richiesta HTTP; esso però viene
restituito sotto forma di array di Byte ognuno dei quali rappresenta un
carattere: come spiegato nel codice, per trasformare questo array di Byte
in una stringa di testo si utilizza lo spazio di nomi System.Text,
oggetto Encoding che attraverso il metodo GetEncoding permette di
trasformare dei byte in testo con la codifica specificata (iso-8859-1, o
latin-1, è la codifica più utilizzata per rappresentare i caratteri
dell'Europa Occidentale).
SALVARE DIRETTAMENTE IL FILE SCARICATO SUL PC Grazie a WebClient è anche possibile con poche istruzioni scaricare un file e salvarlo direttamente sul computer locale:
Class SaveURL
Public Sub New()
Dim wbcDownloader As New System.Net.WebClient() 'Creiamo l'oggetto WebClient
'Eseguiamo la richiesta e salviamo in C:\Ciao.htm
wbcDownloader.DownloadFile("http://www.arcadiaclub.com/programmazione.htm", "C:\Ciao.htm")
End Sub
End Class
La funzione DownloadFile riceve un parametro ulteriore rispetto a DownloadData: l'indirizzo locale del file (in questo caso C:\Ciao.htm) in cui si desidera salvare il responso. Inoltre come si può vedere questo metodo non restituisce nulla.
GESTIRE IN MANIERA AVANZATA IL FLUSSO DI DATI Se utilizzare uno dei due metodi sopra descritti lascia troppo poco controllo per le vostre esigenze sulla ricezione dei dati, allora è meglio utilizzare il metodo WebClient.OpenRead: esso prende come parametro (come nelle precedenti due funzioni) l'URL da scaricare e restituisce un oggetto System.IO.Stream (che nell'esempio che segue, per comodità, trasformeremo in uno StreamReader):
Class OpenURLStream
Public Sub New()
Dim wbcDownloader As New System.Net.WebClient() 'Creiamo l'oggetto WebClient
'Eseguiamo la richiesta e impostiamo stmDati sul flusso di dati restituito
Dim stmDati As New System.IO.StreamReader(wbcDownloader.OpenRead("http://www.arcadiaclub.com/programmazione.htm"))
Dim strRisultato As String 'Stringa dove verrano memorizzati i dati del flusso
strRisultato = stmDati.ReadToEnd() 'Legge tutti i dati del flusso e li memorizza nella stringa
stmDati.Close() 'Chiude il flusso di dati
MsgBox(strRisultato)
End Sub
End Class
Creato l'oggetto WebClient, dichiariamo e inizializziamo
(attraverso New) uno StreamReader (lettore di flusso di
dati) e come parametri passiamo il risultato della funzione OpenRead.
Dichiarata la stringa adibita a ricevere i dati dal flusso (strRisultato),
richiamiamo ReadToEnd, che legge i dati dal flusso fino alla
fine, e poi chiudiamo lo StreamReader attraverso
StreamReader.Close. Naturalmente attraverso l'oggetto
StreamReader è anche possibile utilizzare funzioni più avanzate;ad
esempio per leggere un singolo Byte si usa il metodo ReadByte mentre per
un numero specificato di Byte il metodo Read. |
|||
| << INDIETRO | by VeNoM00 | ||