es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

HttpWebRequest y Restsharp no devuelven respuesta cuando la página es redirigida.

Intento crear una aplicación de consola simple, donde envío una solicitud a una URL y leo la respuesta recibida. Código:

Implementación de HttpWebRequest

HttpWebRequest init = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)init.GetResponse();
Console.WriteLine(resp.StatusCode);

Implementación de RestSharp

var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.StatusCode);

En la mayoría de los casos, esto funciona perfectamente. Pero cuando el sitio web redirige a otra página o puerto (muy a menudo las páginas están escritas en .net con un servidor proxy inverso, por ejemplo, https://www.eventim.pl/), el programa intenta enviar la solicitud pero nunca recibe ninguna respuesta.

He intentado usar:

//HttpWebRequest
init.AllowAutoRedirect = true;

//RestSharp
client.FollowRedirects = true;

Sin embargo, la situación es la misma, se envía la solicitud pero nunca se recibe una respuesta, lo cual termina en tiempo de espera (timeout).

EDICIÓN I: Implementación de HttpClient

HttpClient client = new HttpClient();
try
{
  HttpResponseMessage response = await client.GetAsync("https://www.eventim.pl");
  response.EnsureSuccessStatusCode();
  var res = response.StatusCode;
  Console.WriteLine((int)res);
}
catch (HttpRequestException e)
{
  Console.WriteLine("\n¡Excepción capturada!\n");
  Console.WriteLine("Mensaje: {0}", e.Message);
}

En este caso, también se obtiene un tiempo de espera antes de llegar a response.EnsureSuccessStatusCode();

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en c#, .net, http y RestSharp, me he encontrado con un problema en el que una sencilla aplicación de consola que envía una solicitud a una URL y lee la respuesta recibida no funciona correctamente cuando el sitio web redirige a otra página o puerto.

    He intentado implementar los métodos HttpWebRequest y RestSharp, pero ninguno de ellos parece funcionar correctamente, ya que la solicitud se envía pero no se recibe ninguna respuesta, lo que resulta en un tiempo de espera agotado.

    Para solucionar este problema, he intentado utilizar las propiedades AllowAutoRedirect y FollowRedirects, pero no ha ayudado. Finalmente, he intentado utilizar la implementación de HttpClient con el método GetAsync, pero también ha resultado en un tiempo de espera agotado.

    Por lo tanto, actualmente estoy investigando la causa raíz del problema y buscando una solución adecuada para solucionarlo.

Comments are closed.