HttpListener poskytuje jednoduchý, programovatelný a ovladatelný HTTP protokolový posluchač. Umožňuje vám snadno poskytovat některé Http služby bez nutnosti zahajovat rozsáhlý servisní program jako IIS.
Poznámka: Tato třída je dostupná pouze na počítačích s operačními systémy Windows XP SP2 nebo Windows Server 2003.
Obecné kroky pro používání Http služeb jsou následující:
Vytvořte HTTP listener objekt a inicializujte ho Přidejte předponu URI, kterou je třeba poslouchat Začněte naslouchat požadavkům klientů Zpracování HTTP požadavků od klientů Vypněte HTTP listener Kroky 3 a 4 lze cyklicky provést tak, aby poskytovaly služby požadované více zákazníky.
Vytvořte HTTP listener objekt
Pro vytvoření HTTP listener objektu stačí vytvořit nový objekt HttpListener.
HttpListener listener = nový HttpListener();
Inicializace vyžaduje následující dva kroky
Rozsah URL pro poslech můžete přidat v Listener.Prefixes pomocí následující funkce: posluchač. Prefixes.Add(prefix) //prefix musí končit na '/' Zavolejte posluchače. Začni() připojit port a začít naslouchat potřebám klienta. Přijímání HTTP požadavků
V .net 2.0 je přístup k objektům požadavků a odpovědí používaným třídou HttpListener zajištěn prostřednictvím objektu HttpListenerContext.
Nejjednodušší způsob, jak získat HttpListenerContext, je následující:
HttpListenerContext context = posluchač. GetContext();
Tato metoda zablokuje volací funkci, dokud není přijat klientský požadavek, a pokud chcete zlepšit rychlost odezvy, můžete použít asynchronní metodu listener. BeginGetContext() pro získání objektu HttpListenerContext.
Zpracování HTTP požadavků
Po získání HttpListenerContext můžete získat objekt, který reprezentuje požadavek klienta pomocí atributu Request, a objekt, který reprezentuje odpověď, kterou HttpListener pošle klientovi prostřednictvím atributu Response.
HttpListenerRequest request = kontext. Žádost; HttpListenerResponse response = kontext. Odpověď;
Objekt HttpListenerRequest zde je podobný použití Request and Response v Asp a HttpListenerResponse, takže zde nebudu moc mluvit, níže můžete vidět příklad pro konkrétní použití.
Vypněte HTTP listener
Zavoláním posluchače. Funkce stop() pro vypnutí posluchače a uvolnění relevantních zdrojů
Příklad kódu:
pomocí System; pomocí System.Collections.Generic; pomocí System.Text;
pomocí System.Net;
jmenný prostor ConsoleApplication1
{ Program tříd { static void Main (string[] args) { HttpListener listener = nový HttpListener(); posluchač. předpony.add("http://localhost/"); Přidejte rozsah URL, které je potřeba poslouchat posluchač. Start(); Začněte naslouchat portu a přijímat požadavky klientů Console.WriteLine ("Listening...");
Blokuje hlavní funkci, dokud není přijat požadavek klienta HttpListenerContext context = posluchač. GetContext(); HttpListenerRequest request = kontext. Žádost; HttpListenerResponse response = kontext. Odpověď;
řetězec odpověďŘetězec = řetězec. Formát("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Výstup odpovídajících informací klientovi. odpověď. ContentLength64 = buffer. Délka; System.IO.Stream output = odpověď. OutputStream; výstupu. Write(buffer, 0, buffer. délka); Uzavřete výstupní tok, abyste uvolnili odpovídající zdroje výstupu. Close();
posluchač. Stop(); Vypněte HttpListener } }
}
Program je poměrně jednoduchý, nejprve vytvoří HTTP listener pro implementaci služby domény "http://localhost/time/", když obdrží vzdálený požadavek, převede aktuální čas na výstup řetězce pro klienta a poté ukončí posluchač.
|