HttpListener zapewnia prosty, programowalny i sterowalny nasłuchiwacz protokołu HTTP. Pozwala to łatwo udostępniać niektóre usługi HTTP bez konieczności uruchamiania dużego programu usługowego takiego jak IIS.
Uwaga: Ta klasa jest dostępna tylko na komputerach z systemem operacyjnym Windows XP SP2 lub Windows Server 2003.
Ogólne kroki dotyczące korzystania z usług Http są następujące:
Stwórz obiekt nasłuchiwacza HTTP i inicjalizuj go Dodaj prefiks URI, który trzeba odsłuchać Zacznij nasłuchiwać próśb od klientów Obsługa żądań Http od klientów Wyłącz nasłuchiwacz HTTP Kroki 3 i 4 można cyklicznie obsłużyć, aby zapewnić usługi na żądanie wielu klientów.
Stwórz obiekt nasłuchiwacza HTTP
Aby utworzyć obiekt słuchacza HTTP, wystarczy utworzyć nowy obiekt HttpListener.
Słuchacz HttpListener = nowy HttpListener();
Inicjalizacja wymaga następujących dwóch kroków
Możesz dodać zakres URL, aby odsłuchiwać w prefiksach listener.Prefiks, używając następującej funkcji: słuchacz. Prefiksy. Dodaj (prefiks) //prefiks musi kończyć się na '/' Zadzwoń do słuchacza. Rozpocznij() wiązanie portu i nasłuchuj potrzeb klienta. Akceptuj żądania HTTP
W .net 2.0 dostęp do obiektów żądań i odpowiedzi używanych przez klasę HttpListener jest zapewniany przez obiekt HttpListenerContext.
Najprostszy sposób na uzyskanie HttpListenerContext jest następujący:
HttpListenerContext context = listener. GetContext();
Ta metoda zablokuje funkcję wywołania do czasu otrzymania żądania klienta, a jeśli chcesz poprawić szybkość odpowiedzi, możesz użyć asynchronicznego nasłuchiwacza. BeginGetContext(), aby uzyskać obiekt HttpListenerContext.
Obsługa żądań HTTP
Po uzyskaniu HttpListenerContext możesz uzyskać obiekt reprezentujący żądanie klienta przez atrybut Request oraz obiekt reprezentujący odpowiedź, którą HttpListener wyśle klientowi za pomocą atrybutu Response.
HttpListenerRequest request = kontekst. Prośba; HttpListenerResponse response = kontekst. Odpowiedź;
Obiekt HttpListenerRequest tutaj jest podobny do użycia Request and Response w Asp oraz HttpListenerResponse, więc nie będę tu dużo mówić, możesz zobaczyć przykład poniżej do konkretnego zastosowania.
Wyłącz nasłuchiwacz HTTP
Dzwoniąc do słuchacza. Funkcja stop() wyłącza słuchacza i uwalnia odpowiednie zasoby
Przykład kodu:
z wykorzystaniem System; używając System.Collections.Generic; używając System.Text;
używając System.Net;
przestrzeń nazw ConsoleApplication1
{ Program klasowy { static void Main (string[] args) { Słuchacz HttpListener = nowy HttpListener(); słuchacz. Prefiksy.add("http://localhost/"); Dodaj zakres adresów URL, które trzeba odsłuchać słuchacz. Start(); Rozpocznij nasłuchiwanie na porcie i otrzymywanie żądań klientów Console.WriteLine("Słuchanie...");
Blokuje główną funkcję do czasu otrzymania żądania klienta HttpListenerContext context = listener. GetContext(); HttpListenerRequest request = kontekst. Prośba; HttpListenerResponse response = kontekst. Odpowiedź;
odpowiedzi ciągu ciąguCiąg = ciąg. Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Wypisz odpowiednie informacje do klienta. odpowiedź. ContentLength64 = bufor. Długość; System.IO.Stream output = odpowiedź. OutputStream; wynik. Write(buffer, 0, buffer). Długość); Zamknięcie strumienia wyjściowego, aby uwolnić odpowiednie zasoby wynik. Close();
słuchacz. Stop(); Wyłącz HttpListener } }
}
Program jest stosunkowo prosty: najpierw tworzy nasłuchiwacz HTTP do implementacji usługi domeny "http://localhost/time/", gdy otrzymuje zdalne żądanie, konwertuje bieżący czas na wynik ciągu dla klienta, a następnie zamyka nasłuchiwacz.
|