¿Cuál es la forma más sencilla de llamar a un archivo HttpHandler en .NET?

I have an HttpHandler on my webserver that takes a URL in the form of "https://servername/myhandler?op=get&k=Internal&m=jdahug1". I need to call this URL from my .NET app and capture whatever the output is. Does anyone know how I can do that? I want it to be simple so that I just get back a string with the output, and that I can specify my own timeout.

  • ¡Gracias!
2

4 Respuestas

Pruebe la clase System.Net.WebClient.

Puede utilizar el método .DownloadStringAsync() para aplicar un tiempo de espera.

6
agregado
Esta clase no tiene la capacidad de establecer un tiempo de espera como quería (por lo que puedo ver), pero acepto que es la forma más sencilla de hacer la llamada.
agregado el autor skb, fuente

Shawn Wildermuth ofrece una excelente descripción de las dos opciones que tiene: WebClient y WebRequest ( http://wildermuth .com/2008/09/27/WebClient_vs_WebRequest_in_Silverlight_2 ). WebClient es solo una abstracción de nivel superior que maneja más detalles para usted. Ya que solo está buscando recuperar una cadena, buscaría usar el WebClient, que como Shawn describe, tiene un método DownloadString esperando a que lo use.

3
agregado

Como Joel había dicho, WebClient haría el truco ...

string handlerResponse = new System.Net.WebClient().DownloadString("https://servername/myhandler?op=get&k=Internal&m=jdahug1");

por supuesto, teniendo en cuenta su propio tiempo de espera y buenas prácticas, es probable que no quiera alinear la llamada, pero se entiende la idea.

2
agregado

hemos utilizado lo siguiente en el back-end de nuestro producto (este es solo el código central, no con el manejo de error de tiempo de espera, etc.)

using System.Net;

using System.IO;

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(WebPageUrl);

WebResponse resp = req.GetResponse();

Stream stream = resp.GetResponseStream();

StreamReader reader = new StreamReader(stream);

output.Write(reader.ReadToEnd());
1
agregado