Tengo una API basada en HTTP a la que posiblemente necesite llamar muchas veces. El problema es que no puedo obtener la solicitud para tomar menos de unos 20 segundos, aunque la misma solicitud realizada a través de un navegador es casi instantánea. El siguiente código ilustra cómo lo he implementado hasta ahora.Cómo realizar una solicitud web rápida en C#
WebRequest r = HttpWebRequest.Create("https://example.com/http/command?param=blabla");
var response = r.GetResponse();
Una solución sería hacer una solicitud asincrónica, pero me gustaría saber por qué se tarda tanto tiempo y si puedo evitarlo. También intenté usar la clase WebClient, pero sospecho que usa una WebRequest internamente.
Actualización:
Ejecutar el siguiente código tomó unos 40 segundos en modo de lanzamiento (medido con el cronómetro):
WebRequest g = HttpWebRequest.Create("http://www.google.com");
var response = g.GetResponse();
Estoy trabajando en una universidad donde puede haber cosas diferentes en la configuración de la red afecta el rendimiento, pero el uso directo del navegador ilustra que debe ser casi instantáneo.
Actualización 2:
he subido el código para una máquina remota y funcionó bien por lo que la conclusión debe ser que el código .NET hace algo extra en comparación con el navegador o que tiene la resolución de problemas a través de la dirección de la red de la universidad (¿problemas de proxy o algo ?!).
¿Cómo determinó que la solicitud web lleva tiempo? Por lo general, no tengo problemas de rendimiento con la clase HttpWebRequest. ¿Ha intentado que la aplicación realizara varias llamadas y, de ser así, todas las llamadas tomaron tanto tiempo? –
¿Sucede con todas las URL, como google.com? ¿Qué pasa con el uso de una URL no ssl? – tbreffni
Sí, los comentarios y sugerencias de Fredrik son buenos. No hay ninguna razón por la que HttpWebRequest deba tener un rendimiento deficiente de ninguna manera (y mucho menos * que * deficiente); después de todo, está usando el mismo protocolo que el navegador. – Noldorin