.NET: Eccezione Errore del server remoto 407 richiesta autenticazione proxy

Se all’interno di un applicativo .NET occorre connettersi ad un server web per ottenere dei dati tramite http ad esempio leggere il contenuto di una pagina web o eseguire chiamate verso un URL può accadere che se l’applicativo viene eseguito su un client che fa uso di un proxy con autenticazione integrata di Windows si riceva l’eccezione “Errore del server remoto (407) Richiesta autenticazione proxy” se non viene gestita correttamente l’autenticazione verso il proxy.

image

Per risolvere il problema occorre impostare le credenziali del proxy al valore System.Net.CredentialCache.DefaultCredentials.

Di seguito un esempio utilizzando l’oggetto System.Net.WebClient:

        Try
            Dim url = “http://www.domain.ext
            Using wc = New System.Net.WebClient()
                wc.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
                Dim request = wc.DownloadString(url)
                MessageBox.Show(request)
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

Mentre di seguito un esempio utilizzando l’oggetto System.Net.WebRequest:

        Try
            Dim url = “http://www.domain.ext
            Dim wr = DirectCast(System.Net.WebRequest.Create(url), System.Net.HttpWebRequest)
            wr.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials

            Using r = wr.GetResponse()
                Using rs = r.GetResponseStream()
                    Using s = New System.IO.StreamReader(rs, True)
                        Dim data = s.ReadToEnd()
                        MessageBox.Show(data)
                    End Using
                End Using
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

Per ulteriori informazioni si veda anche HttpWebRequest WebExcepton: The remote server returned an error: (407) Proxy Authentication Required.