Para solucionarlo, simplemente asígnale un user-agent conocido a la petición http y listo. Aparte de eso, tienes una fuga de recursos sin liberar, puedes mejorar el código. Ten presente la importancia de llamar al método
Object.Dispose() o en su defecto decorar un bloque de código con la sentencia
Using:
Dim uri As New Uri("https://es.magiccardmarket.eu/")
Dim html As String
Try
Dim req As HttpWebRequest = HttpWebRequest.Create(uri)
With req
.Method = "GET"
.Accept = "text/html"
.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"
End With
Using res As HttpWebResponse = req.GetResponse(),
sr As New StreamReader(res.GetResponseStream(), Encoding.UTF8)
html = sr.ReadToEnd()
End Using
TextBox1.Text = html
Catch ex As WebException
Debug.
WriteLine(String.
Format("Response Status: {0}", ex.
Status.
ToString())) Throw
Catch ex As Exception
Throw
End Try
Por último, recuerda que también puedes utilizar la clase
WebClient, la cual es un wrapper/abstracción de la clase
HttpWebRequest y eso es lo que deberías utilizar preferiblemente para peticiones simples como ésta:
Dim uri As New Uri("https://es.magiccardmarket.eu/")
Dim html As String
Using wc As New WebClient
wc.Encoding = Encoding.UTF8
wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
Try
html = wc.DownloadString(uri)
TextBox1.Text = html
Catch ex As WebException
Debug.
WriteLine(String.
Format("Response Status: {0}", ex.
Status.
ToString())) Throw
Catch ex As Exception
Throw
End Try
End Using
PD: La diferencia de tiempo total de ejecución entra uno y el otro, se mide en milisegundos.
¡Saludos!