Ciao a tutti, ho un problema con VB6 e Winsock che non riesco proprio a risolvere, sto scrivendo una DLL in VB6 che contiene una sola classe che espone una sola funzione.
Tale funzione dovrebbe chiamare un indirizzo web, eseguire il parsing del testo ricevuto come risposta e restituire una parte del testo ricevuto.
Ho incluso la libreria Winsock (MSWINSCK.OCX) come reference del progetto, all'interno della funzione istanzio un oggetto Winsock ed eseguo la connessione, la richiesta Http ed infine leggo la risposta.
I test sono stati eseguiti attraverso un form che istanzia l'oggetto della DLL, chiama la funzione e mostra il risultato in una TextBox.

Di seguito la funzione:

codice:
Public Function getSubstring(ByVal siteAddress As String) As String
    Dim winSck As Winsock
    Set winSck = New Winsock

    Dim tmpHttpRequest As String
    Dim tmpHttpResponse As String

    Dim tmpVariable As Integer

    tmpHttpRequest = "GET / HTTP/1.1" & vbNewLine & _
                    "Host: " & siteAddress & vbNewLine & _
                    "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" & vbNewLine & _
                    "Accept: text/plain, text/html" & vbNewLine & _
                    "Accept-Language: en" & vbNewLine & _
                    "Accept-Charset: utf-8" & vbNewLine & _
                    "Pragma: no-cache" & vbNewLine & _
                    "Connection: close" & vbNewLine & vbNewLine
    tmpHttpResponse = Empty

    winSck.RemoteHost = siteAddress
    winSck.RemotePort = 80

    If winSck.State <> sckClosed Then winSck.Close
    winSck.Connect

    Do While winSck.State <> sckConnected
        DoEvents
    Loop
    If winSck.State = sckConnected Then winSck.SendData tmpHttpRequest

    winSck.GetData tmpHttpResponse, vbString
    winSck.Close

    getSubstring = processResponse(tmpHttpResponse)

End Function
Il problema consiste nel fatto che la variabile tmpHttpResponse alla fine dell'esecuzione della funzione risulta essere vuota.

Aggiungo un po' di informazioni raccolte nel corso del debugging:
- se inserisco un breakpoint all'inizio della funzione e faccio procedere il programma "manualmente" (F8, F8, F8, etc) la variabile viene correttamente valorizzata, se lo eseguo senza breakpoint la stringa è vuota;
- winSck.GetData e winSck.PeekData forniscono lo stesso risultato (stringa vuota);
- ho inserito uno sleep prima dell'istruzione winSck.GetData (ho provato con tempi di attesa variabili da 0,5 fino a 8 secondi), il risultato non cambia (stringa vuota).

Non riesco proprio a capire dov'è l'errore, ringrazio tutti anticipatamente per qualsiasi aiuto o suggerimento.
Ciao