HttpListener zagotavlja preprost, programabilen in nadzorovan poslušalec HTTP protokola. Omogoča enostavno zagotavljanje nekaterih Http storitev, ne da bi morali začeti velik servisni program, kot je IIS.
Opomba: Ta razred je na voljo le na računalnikih z operacijskimi sistemi Windows XP SP2 ali Windows Server 2003.
Splošni koraki za uporabo Http storitev so naslednji:
Ustvarite HTTP poslušalec objekt in ga inicializirajte Dodajte predpono URI, ki jo je treba poslušati Začnite poslušati zahteve strank Obravnava HTTP zahtevkov od odjemalcev Izklopite HTTP poslušalec Koraka 3 in 4 je mogoče ciklično preklapljati za zagotavljanje storitev, ki jih zahteva več strank.
Ustvarite HTTP objekt poslušalca
Za ustvarjanje HTTP listener objekta morate ustvariti le nov objekt HttpListener.
HttpListener listener = novi HttpListener();
Inicializacija zahteva naslednja dva koraka
Razpon URL-jev za poslušanje lahko dodate v Listener. Predpone z uporabo naslednje funkcije: poslušalec. Predpone.Add(prefix) //predpona mora končati na '/' Pokliči poslušalca. Začni () za vezavo porta in poslušaj potrebe odjemalca. Sprejemanje HTTP zahtevkov
V .net 2.0 je dostop do objektov zahtev in odgovorov, ki jih uporablja razred HttpListener, omogočen prek objekta HttpListenerContext.
Najlažji način za pridobitev HttpListenerContext je naslednji:
HttpListenerContext context = poslušalec. GetContext();
Ta metoda blokira klicno funkcijo, dokler ni prejeta zahteva odjemalca, in če želite izboljšati hitrost odziva, lahko uporabite asinhrono metodo listener. BeginGetContext() za pridobitev objekta HttpListenerContext.
Obravnava HTTP zahtevkov
Po pridobitvi HttpListenerContext lahko pridobite objekt, ki predstavlja zahtevo odjemalca, preko atributa Request in objekt, ki predstavlja odgovor, ki ga bo HttpListener poslal odjemalcu preko atributa Response.
HttpListenerRequest request = kontekst. Prošnja; HttpListenerResponse response = kontekst. Odgovor;
Objekt HttpListenerRequest tukaj je podoben uporabi Request and Response v ASP in HttpListenerResponse objektih, zato tukaj ne bom veliko razlagal, spodaj si lahko ogledate primer za specifično uporabo.
Izklopite HTTP poslušalec
S klicem poslušalca. Funkcija stop() izklopi poslušalca in sprosti ustrezne vire
Primer kode:
z uporabo System; z uporabo System.Collections.Generic; z uporabo System.Text;
z uporabo System.Net;
imenski prostor ConsoleApplication1
{ Razredni program { static void Main (string[] args) { HttpListener listener = novi HttpListener(); poslušalec. Predpone.add("http://localhost/"); Dodaj razpon URL-jev, ki jih je treba poslušati poslušalec. Start(); Začnite poslušati na portu in prejemati zahteve odjemalcev Console.WriteLine ("Poslušanje...");
Blokira glavno funkcijo, dokler ni prejeta zahteva odjemalca HttpListenerContext context = poslušalec. GetContext(); HttpListenerRequest request = kontekst. Prošnja; HttpListenerResponse response = kontekst. Odgovor;
odgovor na niz String = string. Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Izpišite ustrezne informacije odjemalcu. Odgovor. ContentLength64 = medpomnilnik. Dolžina; System.IO.Stream output = odziv. OutputStream; izhod. Write(buffer, 0, buffer. Dolžina); Zaprete izhodni tok, da sprostite ustrezne vire izhod. Close();
poslušalec. Stop(); Izklopite HttpListener } }
}
Program je razmeroma preprost: najprej ustvari HTTP poslušalec za implementacijo storitve domene "http://localhost/time/", ko prejme oddaljeno zahtevo, pretvori trenutni čas v izhodni niz za odjemalca in nato zapre poslušalca.
|