HttpListener bietet einen einfachen, programmierbaren und steuerbaren HTTP-Protokoll-Listener. Es ermöglicht Ihnen, einige HTTP-Dienste einfach bereitzustellen, ohne ein großes Serviceprogramm wie IIS starten zu müssen.
Hinweis: Diese Klasse ist nur auf Computern mit Windows XP SP2 oder Windows Server 2003 Betriebssystemen verfügbar.
Die allgemeinen Schritte zur Nutzung von HTTP-Diensten sind wie folgt:
Erstelle ein HTTP-Listener-Objekt und initialisiere es Füge das URI-Präfix hinzu, das gehört werden muss Fang an, auf Anfragen von Kunden zu achten Behandle HTTP-Anfragen von Clients Schalte den HTTP-Listener aus Die Schritte 3 und 4 können so durchgeführt werden, dass sie Dienstleistungen anbieten, die von mehreren Kunden angefordert werden.
Erstellen Sie ein HTTP-Listener-Objekt
Um ein HTTP-Listener-Objekt zu erstellen, muss man nur ein neues HttpListener-Objekt erstellen.
HttpListener Listener = neuer HttpListener();
Die Initialisierung erfordert die folgenden zwei Schritte
Sie können den URL-Bereich zum Hören in listener.Prefixes hinzufügen, indem Sie folgende Funktion verwenden: Zuhörer. Präfixe.Add(Präfix) //Präfix muss auf '/' enden. Ruf den Hörer an. Start(), um den Port zu binden und auf die Bedürfnisse des Kunden zu achten. HTTP-Anfragen akzeptieren
In .NET 2.0 erfolgt der Zugriff auf die von der HttpListener-Klasse verwendeten Anfrage- und Antwortobjekte über das Objekt HttpListenerContext.
Der einfachste Weg, den HttpListenerContext zu erhalten, ist wie folgt:
httpListenerContext context = Listener. GetContext();
Diese Methode blockiert die Aufruffunktion, bis eine Client-Anfrage eingegangen ist, und wenn Sie die Antwortgeschwindigkeit verbessern möchten, können Sie die asynchrone Methode Listener verwenden. BeginGetContext(), um das Objekt HttpListenerContext zu erhalten.
HTTP-Anfragen bearbeiten
Nachdem Sie den HttpListenerContext erhalten haben, können Sie das Objekt erhalten, das die Client-Anfrage über das Request-Attribut repräsentiert, und das Objekt, das die Antwort repräsentiert, die der HttpListener über das Response-Attribut an den Client senden wird.
HttpListenerRequest-Anfrage = Kontext. Bitte; HttpListenerResponse Antwort = Kontext. Reaktion;
Das HttpListenerRequest-Objekt hier ähnelt der Verwendung von Request and Response in Asp und HttpListenerResponse, daher werde ich hier nicht viel sagen, du kannst das untenstehende Beispiel für spezifische Zwecke sehen.
Schalte den HTTP-Listener aus
Indem du den Zuhörer anrufst. Stop()-Funktion zu deaktivieren, um den Hörer auszuschalten und die relevanten Ressourcen freizusetzen
Codebeispiel:
mit System; mit System.Collections.Generic; mit System.Text;
mit System.Net;
namensraum ConsoleApplication1
{ Klassenprogramm { statisches Void Haupt(string[] args) { HttpListener Listener = neuer HttpListener(); Zuhörer. Präfixe.Add("http://localhost/"); Füge die Reihe der URLs hinzu, die gehört werden müssen Zuhörer. Start(); Beginnen Sie mit dem Zuhören am Port und empfangen Sie Client-Anfragen Console.WriteLine ("Listening...");
Blockiert die Hauptfunktion, bis eine Client-Anfrage eingegangen ist httpListenerContext context = Listener. GetContext(); HttpListenerRequest-Anfrage = Kontext. Bitte; HttpListenerResponse Antwort = Kontext. Reaktion;
String ResponseString = String. Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Gib die entsprechenden Informationen an den Client aus. Antwort. ContentLength64 = Puffer. Länge; System.IO.Stream-Ausgabe = Antwort. OutputStream; Output. Write(buffer, 0, buffer. Länge); Schließen Sie den Ausgangsstrom, um die entsprechenden Ressourcen freizusetzen Output. Close();
Zuhörer. Stop(); Schalten Sie HttpListener aus } }
}
Das Programm ist relativ einfach: Zuerst erstellt man einen HTTP-Listener, um den Dienst der "http://localhost/time/"-Domäne zu implementieren; wenn er eine entfernte Anfrage erhält, wandelt er die aktuelle Zeit in eine String-Ausgabe an den Client um und schließt dann den Listener.
|