Was ist der einfachste Weg, eine HttpHandler-Datei in .NET aufzurufen?

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.

  • Danke!
2

4 Antworten

Versuchen Sie die System.Net.WebClient-Klasse.

Sie können die .DownloadStringAsync() -Methode verwenden, um ein Zeitlimit zu erzwingen.

6
hinzugefügt
Diese Klasse hat nicht die Fähigkeit, ein Timeout einzustellen, wie ich es wollte (soweit ich das sehen kann), aber ich stimme zu, dass es der einfachste Weg ist, den Anruf zu tätigen.
hinzugefügt der Autor skb, Quelle

Shawn Wildermuth gibt einen guten Überblick über die zwei Möglichkeiten, die Sie haben: WebClient und WebRequest ( http://wildermuth .com/2008/09/27/WebClient_vs_WebRequest_in_Silverlight_2 ). WebClient ist nur eine Abstraktion auf höherer Ebene, die mehr Details für Sie behandelt. Da Sie nur nach einer Zeichenfolge suchen, würde ich versuchen, den WebClient zu verwenden, der, wie Shawn beschreibt, eine DownloadString-Methode hat, die nur darauf wartet, dass Sie sie verwenden.

3
hinzugefügt

Wie Joel gesagt hatte, würde WebClient den Trick machen ..

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

Natürlich, wenn Sie Ihre eigene Zeitüberschreitung und gute Praktiken haben, möchten Sie wahrscheinlich den Anruf nicht in die Leitung aufnehmen, aber Sie bekommen die Idee.

2
hinzugefügt

Wir haben das Folgende im Backend unseres Produktes benutzt (dies ist nur der Kerncode, nicht mit Timeout-Fehlerbehandlung 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
hinzugefügt