Recientemente descubrí que lo siguiente no funciona con ciertos sitios, como IMDB.com.WebRequest "HEAD" alternativa ligera
class Program
{
static void Main(string[] args)
{
try
{
System.Net.WebRequest wc = System.Net.WebRequest.Create("http://www.imdb.com"); //args[0]);
((HttpWebRequest)wc).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19";
wc.Timeout = 1000;
wc.Method = "HEAD";
WebResponse res = wc.GetResponse();
var streamReader = new System.IO.StreamReader(res.GetResponseStream());
Console.WriteLine(streamReader.ReadToEnd());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Devuelve un HTTP 405 (método no permitido). Mi problema es que utilizo un código muy similar al anterior para verificar si un enlace es válido y la gran mayoría de las veces funciona correctamente. Puedo cambiar al método GET igual y funciona (con un aumento en el tiempo de espera), pero esto ralentiza las cosas en un orden de magnitud. Estoy asumiendo que la respuesta 405 es una configuración de servidor en el servidor de IMDB.
¿Hay alguna manera de que haga lo mismo que arriba, de una manera ligera en .NET? ¿O hay una forma de corregir el código anterior para que funcione como una solicitud GET que funciona con imdb?
Tuve que aumentar el tiempo de espera, pero el código que publicaste arriba funciona para mí. Cambiarlo a POST no tendría sentido, porque no tiene ningún dato para publicar. Y su título habla sobre HEAD, pero no está haciendo una solicitud HEAD. Por favor, aclare cuál es la pregunta, ya que su código "roto" funciona bien. –
Ug, error realmente estúpido en el título. Reparado ahora ... ejemplo clásico de pensar una cosa y escribir otra. Cuando ejecuta el código anterior, ¿no está obteniendo una respuesta 405? EDITAR: Ok, me di cuenta de que incluso mi código era defectuoso. Lo anterior es lo que quise publicar, y está editado para dar el error 405 (y tiene sentido ...) – Serapth