Qual é a maneira mais simples de chamar um arquivo HttpHandler no .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.

  • Obrigado!
2

4 Respostas

Experimente a classe System.Net.WebClient.

Você pode usar o método .DownloadStringAsync() para impor um tempo limite.

6
adicionado
Esta classe não tem a capacidade de definir um tempo limite como eu queria (tanto quanto eu posso ver), mas eu concordo que é a maneira mais simples de fazer a chamada.
adicionado o autor skb, fonte

Shawn Wildermuth fornece uma excelente visão geral das duas opções que você tem: WebClient e WebRequest ( http://wildermuth .com/2008/09/27/WebClient_vs_WebRequest_in_Silverlight_2 . O WebClient é apenas uma abstração de nível mais alto que manipula mais detalhes para você. Uma vez que você está apenas olhando para pegar uma string de volta, eu procuraria usar o WebClient, que, como Shawn descreve, tem um método DownloadString apenas esperando por você para usar.

3
adicionado

Como Joel tinha dito WebClient faria o truque ..

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

É claro que, dado o seu próprio tempo limite e boas práticas, você provavelmente não quer inline a chamada, mas você tem a idéia.

2
adicionado

Usamos o seguinte no backend do nosso produto (este é apenas o código principal, não com timehandling de tempo limite 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
adicionado