Newsgroup: it.comp.lang.visual-basic
Titolo: Scaricare la source di un sito

Salve a tutti,
ho iniziato a capire l'utilizzo dei winsock e devo dire che mi è parso più
complicato del previsto.
Vorrei riuscire a scaricare la source html di un sito qualunque e ho pensato
il metodo GetData del componente Winsock.
È corretto?
Winsock1.connect 
www.prova.com
, 80
Winsock1.getdata ' a questo punto già qui non so bene cosa inserire
Ho poi visto che andava configurato il componente socket (con il localhost,
...), ma anche configurato quello non va.
Come fare?
Ringrazio.

 ha scritto nel messaggio

Oltre ai numerosi esempi che puoi trovare sul sito comune sull'uso del
controllo Winsock, ai numerosi post pubblicati recentemente, ai numerosi
post che si trovano su GoogleGroup, senza andare tanto lontano insomma,
io premendo F1 da VB dopo aver evidenziato il metodo GetData ho ottenuto
quanto segue:
[BEGIN]
Metodo GetData (Controllo Winsock)
Recupera il blocco di dati corrente e lo memorizza in una variabile di
tipo Variant.
Valore restituito
Nessuno
Sintassi
oggetto.GetData dati, [tipo,] [lunMax]
La sintassi del metodo GetData è composta dalle seguenti parti:
oggetto Espressione oggetto che definisce un oggetto dell'elenco "Si
applica a".
dati Memorizza i dati recuperati dopo l'esecuzione del metodo. Se i dati
non sono sufficienti per il tipo di richiesta, dati verrà impostato su
Empty.
tipo Facoltativa. Tipo di dati da recuperare, come indicato nella
sezione "Impostazioni".
lunMax Facoltativa. Specifica la dimensione desiderata della matrice
Byte o della stringa da ricevere. Se non viene specificata alcuna
matrice Byte o stringa in questo argomento, verranno recuperati tutti i
dati disponibili. Se viene specificato un tipo di dati diverso da una
matrice Byte o una stringa, l'argomento verrà ignorato.
[...]
[END]
Il codice corretto è pertanto:
Dim vReceivedData as Variant
Winsock1.Connect "
www.prova.com
", 80
Winsock1.GetData vReceivedData ' a questo punto già qui non so bene cosa
inserire
Text1.Text = CStr(vReceivedData) 'Ad esempio
Lokar

 complicato del previsto.
...
Apri una form
Metti una textbox da una riga e accanto un command con il testo "GET"
Sotto metti un'altra texbox e imposta la sua proprietà "multiline" a TRUE
Poi metti un controllo winsock.
Quindi copia questo codice:
------------------------------------------------------------------------
Option Explicit
Private Sub Command1_Click()
    Winsock1.Protocol = sckTCPProtocol
    Winsock1.Connect Text1, 80
End Sub
Private Sub Winsock1_Connect()
    Winsock1.SendData "GET / HTTP/1.0" & vbCrLf & vbCrLf
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim a As String
    Caption = "ricevuti " & bytesTotal & " bytes"
    Winsock1.GetData a, "string"
    Text2 = a
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String,
ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal
HelpContext As Long, CancelDisplay As Boolean)
     MsgBox "ERRORE " & Number & vbCrLf & Description
End Sub
------------------------------------------------------------------------
Informazioni su come si usa il più semplice e funzionale protocollo che
conosca (HTTP) le trovi qui: 
http://www.w3.org/Protocols/
Buon divertimento.
ciao,
Dads.