|
|
Közzétéve 2015. 12. 21. 11:00:26
|
|
|

A HTTP protokoll hallgatóinak további egyszerűsítése érdekében . A .NET a HttpListener osztályt adja a névtérben System.Net. Ehhez a tárgyhoz kapcsolódva, . A .NET egy sor kapcsolódó objektumot kínál, amelyek a HTTP feldolgozási munkát lefedik. Fontos megjegyezni, hogy ez az osztály Http.sys rendszerkomponenseket használ a feladat elvégzéséhez, így csak Windows XPSP2, Server 2003 vagy újabb operációs rendszereken használható.
A HttpListener osztály tovább egyszerűsíti a hallgatási műveletet, és csak a hallgatási címet, portszámot és virtuális útvonalat kell megadnia a string módszeren keresztül a hallgatási munka elindításához.
A hallgatás megkezdése után a GetContext metódus blokkolja a szálat, amikor megérkezik a kliens kérése, a HttpListener egy HttpListenerContext objektumot ad vissza általános proxyként a klienskérések feldolgozásához, a proxy objektum Request tulajdonságán keresztül kaphatunk egy HttpListenerRequest típusú objektumot, amely a kérésparamétereket képviseli, ez az objektum a legtöbb kérésparamétert objektifikálja, így , a kérésparamétereket a megadott tulajdonságok sorozatán keresztül kaphatjuk meg. Például a HttpListenerRequest HttpMethod tulajdonsága megadja a kért metódustípust. A proxy Response attribútumán keresztül egy HttpListenerResponse típusú válaszfeldolgozó objektumot kaphatunk, amely bekapja a válasz adatait és műveleteit, jelentősen leegyszerűsítve a válasz programozási terhelését, és a munkafolyamat a következő:
//检查系统是否支持 ha (! httpListener.IsSupported)
{ throw new System.InvalidOperationException( "A HttpListener használatához Windows XP SP2-n vagy Server 2003-on vagy még újabbnak kell lennie!" );
} Fontos megjegyezni, hogy az előtagnak / előre lecsapással kell végződnie string[] előtagok = új string[] { "http://localhost:49152/" }; Hozz létre egy hallgatót. HttpListener hallgató = új HttpListener(); Add hozzá a monitor előtagját. foreach (s sorok előtagokban)
{ hallgató. Előtagok.Add(ok);
} Kezdj el hallgatni hallgató. Start(); Console.WriteLine("hallgatás..."); miközben (igaz)
{ Megjegyzés: A GetContext módszer blokkolja a szálat, amíg meg nem érkezik a kérés HttpListenerContext context = hallgató. GetContext(); Szerezd meg a kérés objektumot HttpListenerRequest request = kontextus. Kérés; Console.WriteLine("{0} {1} HTTP/1.1", request. HttpMethod, kérés. RawUrl); Console.WriteLine("Accept: {0}", string. Csatlakozz(",", kérés. AcceptTypes)); Console.WriteLine("Accept-Language: {0}", Zsinór. Csatlakozz(",", kérés. UserLanguages)); Console.WriteLine("User-Agent: {0}", request. UserAgent); Console.WriteLine("Accept-Encoding: {0}", request. fejléceket["Accept-Encoding"]); Console.WriteLine("Connection: {0}", kérés. Maradj meg ? "Életben maradjon": "közel"); Console.WriteLine("Host: {0}", request. UserHostName); Console.WriteLine("Pragma: {0}", request. fejléceik["Pragma"]); Válaszcél megszerzése HttpListenerResponse válasz = kontextus. Válasz; A választartalom megalkotása string responseString = @"<html> <head><title>A HttpListener szerverről</title></head> <body><h1>Helló világ.</h1></body> ";</html> Állítsd be a válaszfejléc tartalmát, hosszát, kódolását válasz. ContentLength64 = System.Text.Encoding.UTF8.GetByteCount(responseString); válasz. ContentType = "szöveg/html; charset=UTF-8"; Kimeneti válaszok System.IO.Stream kimenet = válasz. OutputStream; System.IO.StreamWriter writer = új System.IO.StreamWriter(output); író. Write(responseString); A kimeneti áramot ki kell kapcsolni író. Close(); if (Console.KeyAvailable) szünet;
} Állítsd le a szervert hallgató. Stop();
A HttpListener használata során a gyakran használt kérés- és válaszparaméterek objektumtulajdonságokká válnak, ami jelentősen csökkenti a programozási terhelést. Azonban a legtöbb paramétert továbbra is a Headers indexeren keresztül kell elérni, akárcsak az Accept-Encoding request paraméter a fenti példában, amelyet közvetlenül a tulajdonságokon keresztül nem lehet elérni. |
Előző:CSS és js fájlok után kérdőjel következikKövetkező:Elkezdődött a nap!! Gyertek, mindenki
|