У меня была такая же проблема, и ответ не был очевидным. Я нашел решение, нюхающее сетевые коммуникации. Когда Apache предоставляет свою страницу «Testing 1 2 3 ...», он возвращает HTML с кодом запрета 403. Браузер игнорирует, получает код и показывает страницу, но de WebClient возвращает сообщение об ошибке. Решение состоит в том, чтобы прочитать ответ внутри инструкции «Уловка попытки». Вот мой код:
Dim Retorno As String = ""
Dim Client As New SiteWebClient
Client.Headers.Add("User-Agent", "Mozilla/ 5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " &
"(KHTML, Like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134")
Client.Headers.Add("Accept-Language", "pt-BR, pt;q=0.5")
Client.Headers.Add("Accept", "Text/ html, application / xhtml + Xml, application / Xml;q=0.9,*/*;q=0.8")
Try
Retorno = Client.DownloadString("http://" & HostName & SitePath)
Catch ex As Exception
If ex.GetType = GetType(System.Net.WebException) Then
Try
Dim Exception As System.Net.WebException = ex
Dim Resposta As System.Net.HttpWebResponse = Exception.Response
Using WebStream As New StreamReader(Resposta.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"))
Retorno = WebStream.ReadToEnd
End Using
Catch ex1 As Exception
End Try
End If
End Try
После попытки Try Retorno будет содержать HTML-ответ сервера, независимо от того, какой код ошибки возвращает сервер.
Заголовки не влияют на это поведение.