Download di un file da un sito Web

di Giorgio il
11 risposte
Ho necessità di scaricare un file da un sito web, ho scritto il seguente codice:
 Dim readText() As String = File.ReadAllLines(Application.StartupPath & "\Preferenze.tfm")
        Dim CartArchDIS As String = readText(1)
        Dim CartArchTAF As String = readText(0)
        Dim LinkTAF As String = "http://www1.agenziaentrate.gov.it/servizi/TafDis/download.php?&tipofile={0}&iduff={1}1"
        Dim LinkM = String.Format(LinkTAF, "DIST", "OR")
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
        Dim misurate As New WebClient()
        
        misurate.DownloadFileAsync(New Uri(LinkM), CartArchDIS & "/Dist.zip")
Purtroppo mi segnala:
"Connessione sottostante chiusa: Errore imprevisto durante un'operazione di ricezione"
Non riesco a capire il motivo, qualche suggerimento?
grazie

11 Risposte

  • Che versione di .NET Framework stai usando ??

    che comando devi dare esattamente ??
    questo ??
    
    http://www1.agenziaentrate.gov.it/servizi/TafDis/download.php?&tipofile=DIST&iduff=OR1
    
    sicuro che non ci sia un "1" di troppo alla fine ??
  • Giorgio ha scritto:


    "Connessione sottostante chiusa: Errore imprevisto durante un'operazione di ricezione"
    Non riesco a capire il motivo, qualche suggerimento?
    Visto che usi la versione "Async" del metodo, il tuo programma rimane in attesa o controlla il termine dell'operazione in qualche modo?
  • Prova questo codice, a me funziona
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            ServicePointManager.SecurityProtocol = CType(3072, Net.SecurityProtocolType) ' TLS 1.2
            ServicePointManager.ServerCertificateValidationCallback = Function(senders, certificate, chain, sslPolicyErrors) True
    
        End Sub
    
        Private Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
    
            Dim wc = New WebClient
            wc.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0")
            wc.DownloadFile("http://www1.agenziaentrate.gov.it/servizi/TafDis/download.php?&tipofile=DIST&iduff=OR1", _
                My.Computer.FileSystem.SpecialDirectories.Desktop & "\DIST.zip")
    
        End Sub
    
  • Alka ha scritto:


    Giorgio ha scritto:


    "Connessione sottostante chiusa: Errore imprevisto durante un'operazione di ricezione"
    Non riesco a capire il motivo, qualche suggerimento?
    Visto che usi la versione "Async" del metodo, il tuo programma rimane in attesa o controlla il termine dell'operazione in qualche modo?
    si controlla il termine dell'operazione con il seguente codice:
    AddHandler misurate.DownloadProgressChanged, AddressOf ShowDownloadProgressMis
            AddHandler misurate.DownloadFileCompleted, AddressOf OnDownloadCompleteMis
            
             Private Sub OnDownloadCompleteMis(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
            If Not e.Cancelled AndAlso e.Error Is Nothing Then
    
                Dim CartArchDIS As String
                Dim readText() As String = File.ReadAllLines(Application.StartupPath & "\Preferenze.tfm")
                CartArchDIS = readText(1)
    
                ZipFile.ExtractToDirectory(CartArchDIS & "dist.zip", CartArchDIS)
    
                My.Computer.FileSystem.DeleteFile(CartArchDIS & "dist.zip", FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
                Verifica_date_archivi()
                AggiornaDateTAFMis(dataTAF, dataMis, sigla, nomeprov)
            Else
                MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Download archivi Misurate")
                BtuEsci.Enabled = True
    
            End If
        End Sub
        
        Private Sub ShowDownloadProgressMis(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
            ProgressBarMis.Value = e.ProgressPercentage
            LblPerMis.Text = e.ProgressPercentage & "%"
            Dim totbyte = e.TotalBytesToReceive
        End Sub
        
    
  • Giorgio ha scritto:


    si controlla il termine dell'operazione con il seguente codice:
    
    [...]
    ZipFile.ExtractToDirectory(CartArchDIS & "dist.zip", CartArchDIS)
    [...]            
    
    Non manca uno slash dopo CartArchDIS?
  • Alka ha scritto:


    Giorgio ha scritto:


    si controlla il termine dell'operazione con il seguente codice:
    
    [...]
    ZipFile.ExtractToDirectory(CartArchDIS & "dist.zip", CartArchDIS)
    [...]            
    
    Non manca uno slash dopo CartArchDIS?
    Lo slash è già inserito nella variabile CartArchDis
  • Giorgio ha scritto:


    Lo slash è già inserito nella variabile CartArchDis
    Nel primo esempio non era così.
    Ora ne siamo sicuri?

    Inoltre, per combinare tra loro i percorsi di file e directory con sicurezza si usa Path.Combine(), non il concatenamento di stringhe.

    Hai tentato anche la soluzione di SirJo?
    Siamo sicuri che il problema sia proprio nel download e non in qualche altra operazione correlata o successiva?
  • Alka ha scritto:


    Giorgio ha scritto:


    Lo slash è già inserito nella variabile CartArchDis
    Nel primo esempio non era così.
    Ora ne siamo sicuri?

    Inoltre, per combinare tra loro i percorsi di file e directory con sicurezza si usa Path.Combine(), non il concatenamento di stringhe.

    Hai tentato anche la soluzione di SirJo?
    Siamo sicuri che il problema sia proprio nel download e non in qualche altra operazione correlata o successiva?
    Si, in effetti nel primo esempio il codice era sbagliato, l'ho corretto.
    Ho provato il codice di sirJo, ma da lo stesso errore.
    Ho provato a scaricare gli archivi direttamente dal sito e per alcune provincie segnala:

    Impossibile raggiungere questa pagina
    La connessione è stata reimpostata.
    Prova a:

    Verifica della connessione
    Verifica del proxy e del firewall
    Usare la diagnostica di rete Windows
    ERR_CONNECTION_RESET


    Alla fine penso che il problema sia nel sito dell'Agenzia delle Entrate, cosa ne pensi?
    grazie
  • Visto che non ti funziona il codice di sirjo, sei sicuro di aver autorizzzato la tua applicazione sul firewall correttamente?
  • surfernet ha scritto:


    Visto che non ti funziona il codice di sirjo, sei sicuro di aver autorizzzato la tua applicazione sul firewall correttamente?
    Mi puoi spiegare come dovrei procedere.
    Grazie
Devi accedere o registrarti per scrivere nel forum
11 risposte