- 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 ClassAttraverso 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 |