A HttpListener egyszerű, programozható és irányítható HTTP protokoll hallgatót biztosít. Lehetővé teszi, hogy könnyedén nyújtsd néhány Http szolgáltatást anélkül, hogy nagy szolgáltatási programot, például az IIS-t kellene indítani.
Megjegyzés: Ez az osztály csak Windows XP SP2 vagy Windows Server 2003 operációs rendszereken elérhető.
A Http szolgáltatások általános lépései a következők:
Hozz létre egy HTTP hallgató objektumot és inicializáld Add hozzá az URI előtagot, amit hallgatni kell Kezdj el hallgatni az ügyfelek kéréseit. Kezelni a kliensektől érkező HTTP kéréseket Kapcsold ki a HTTP hallgatót A 3. és 4. lépés körbevált módon több ügyfél által kért szolgáltatásokat nyújthat.
Hozzon létre HTTP hallgató objektumot
HTTP hallgató objektum létrehozásához csak egy új HttpListener objektumot kell létrehozni.
HttpListener hallgató = új HttpListener();
Az inicializáció két lépést igényel
Az URL-tartományt hozzáadhatod a listener.-ben a hallgatáshoz. Előtagokat a következő funkcióval használva: hallgató. Prefixes.Add(prefix) //prefix '/' betűvel kell végződnie Hívd fel a hallgatót. Start() a port kötéséhez, és elkezdd hallgatni az ügyfél igényeit. HTTP kérések elfogadása
A .net 2.0-ban a HttpListenerContext objektum által használt kérés- és válaszobjektumokhoz való hozzáférés a HttpListenerContext objektumon keresztül érhető el.
A legegyszerűbb módja a HttpListenerContext megszerzésének a következő:
HttpListenerContext context = hallgató. GetContext();
Ez a módszer blokkolja a hívási függvényt, amíg nem érkezik egy kliens kérés, és ha javítani szeretnéd a válaszsebességet, használhatod az aszinkron metódushallgatót. BeginGetContext() segítségével megszerezzük a HttpListenerContext objektumot.
HTTP kérések kezelése
Miután megszerezte a HttpListenerContext-et, megszerezheti azt az objektumot, amely az ügyfél kérését képviseli, a Request attribútumon keresztül, valamint azt az objektumot, amely a HttpListener által a Response attribútumon keresztül küldött választ a kliensnek.
HttpListenerRequest request = kontextus. Kérés; HttpListenerResponse válasz = kontextus. Válasz;
A HttpListenerRequest objektum itt hasonló az Ask and Response használatához az Asp és a HttpListenerResponse objektumban, így nem mondok sokat itt, lásd az alábbi példát a konkrét felhasználáshoz.
Kapcsold ki a HTTP hallgatót
A hallgató felhívásával. Stop() funkció kikapcsolja a hallgatót és felszabadítja a releváns erőforrásokat
Kód példa:
System használatával; System.Collections.Generic használatával; System.Text használatával;
System.Net használatával;
névtér ConsoleApplication1
{ Osztályprogram { statikus void Main(string[] args) { HttpListener hallgató = új HttpListener(); hallgató. Előtagok.Add("http://localhost/"); Add hozzá az URL-ek tartományát, amelyeket hallgatni kell hallgató. Start(); Kezdj el hallgatni a portot, és fogadd el az ügyfélkéréseket Console.WriteLine ("Hallgatás...");
Blokkolja a fő funkciót, amíg nem érkezik egy kliens kérés HttpListenerContext context = hallgató. GetContext(); HttpListenerRequest request = kontextus. Kérés; HttpListenerResponse válasz = kontextus. Válasz;
string responseString = string. Format(<HTML><BODY>" {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); A megfelelő információkat a kliensnek adja ki. válasz. ContentLength64 = buffer. Hossz; System.IO.Stream kimenet = válasz. OutputStream; Kimenet. Write(buffer, 0, buffer. Hossz); Zárd be a kimeneti áramot, hogy felszabadítsd a megfelelő erőforrásokat Kimenet. Close();
hallgató. Stop(); Kapcsold ki a HttpListenert } }
}
A program viszonylag egyszerű: először létrehoznak egy HTTP hallgatót, amely a "http://localhost/time/" domain szolgáltatását valósítja meg, amikor távoli kérést kap, az aktuális időt egy string kimenetté alakítja át az ügyfélnek, majd lezárja a hallgatót.
|