|
|
Zverejnené 21. 12. 2015 11:00:26
|
|
|

Na ďalšie zjednodušenie poslucháčov pre HTTP protokol, . .NET poskytuje triedu HttpListener v mennom priestore System.Net. K tomuto objektu patrí . .NET poskytuje sériu súvisiacich objektov, ktoré zapuzdrujú prácu spracovania HTTP. Upozorňujeme, že táto trieda používa Http.sys systémové komponenty na vykonanie úlohy, takže ju možno použiť len na operačných systémoch Windows XPSP2 alebo Server 2003 či novších.
Trieda HttpListener ďalej zjednodušuje operáciu počúvania a na začatie počúvania stačí poskytnúť adresu počúvania, číslo portu a virtuálnu cestu cez metódu reťazca.
Po začatí počúvania metóda GetContext zablokuje vlákno, keď dorazí požiadavka klienta, HttpListener vráti objekt HttpListenerContext ako všeobecný proxy pre spracovanie požiadaviek klienta, cez vlastnosť Request v proxy objekte môžeme získať objekt typu HttpListenerRequest reprezentujúci parametre požiadavky, tento objekt objektivizuje väčšinu parametrov požiadaviek, takže , parametre požiadaviek môžeme získať prostredníctvom série vlastností, ktoré poskytuje. Napríklad vlastnosť HttpMethod v HttpListenerRequest poskytuje požadovaný typ metódy. Prostredníctvom atribútu Response v proxy môžeme získať objekt spracovania odpovede typu HttpListenerResponse, ktorý zapuzdruje dáta a operácie odpovede, čo výrazne zjednodušuje programovaciu záťaž odpovede, a pracovný proces je nasledovný:
//检查系统是否支持 ak (! HttpListener.IsSupported)
{ throw new System.InvalidOperationException( "Ak chcete používať HttpListener, musíte mať Windows XP SP2 alebo Server 2003 či novší!" );
} Upozorňujeme, že predpona musí končiť na /forward slash prefixy reťazca[] = nový reťazec[] { "http://localhost:49152/" }; Vytvorte si poslucháča. HttpListener listener = nový HttpListener(); Pridajte prefix monitora. foreach (reťazec s v prefixoch)
{ poslucháč. Prefixes.Add(s);
} Začnite počúvať poslucháč. Start(); Console.WriteLine(" počúvanie..."); zatiaľ čo (pravda)
{ Poznámka: Metóda GetContext zablokuje vlákno, kým požiadavka nepríde HttpListenerContext context = poslucháč. GetContext(); Získajte objekt požiadavky HttpListenerRequest request = kontext. Žiadosť; Console.WriteLine("{0} {1} HTTP/1.1", požiadavka. HttpMethod, žiadosť. RawUrl); Console.WriteLine("Prijať: {0}", reťazec. Pridajte sa (",", žiadam. AcceptTypes)); Console.WriteLine("Accept-Language: {0}", Šnúrka. Pridajte sa (",", žiadam. UserLanguages)); Console.WriteLine("User-Agent: {0}", požiadavka. UserAgent); Console.WriteLine("Accept-Encoding: {0}", požiadavka. hlavičky["Accept-Encoding"]); Console.WriteLine("Connection: {0}", žiadosť. Keep Livev e ? "Keep-Alive" : "close"); Console.WriteLine("Hostiteľ: {0}", požiadavka. UserHostName); Console.WriteLine("Pragma: {0}", požiadavka. Hlavičky["Pragma"]); Získajte cieľ reakcie Odpoveď HttpListenerResponse = kontext. Odpoveď; Zostavte obsah odpovede odpoveď reťazcaReťazec = @"<html> <head><title>Zo servera HttpListener</title></head> <body><h1>čaute všetci.</h1></body> ";</html> Nastavte obsah hlavičky odpovede, dĺžku, kódovanie Odpoveď. ContentLength64 = System.Text.Encoding.UTF8.GetByteCount(responseString); Odpoveď. ContentType = "text/html; charset=UTF-8"; Výstupné odpovede System.IO.Stream output = odpoveď. OutputStream; System.IO.StreamWriter writer = nový System.IO.StreamWriter(output); spisovateľ. Write(responseString); Výstupný prúd musí byť vypnutý spisovateľ. Close(); if (Console.KeyAvailable) prestávka;
} Vypnite server poslucháč. Stop();
Pri používaní HttpListeneru sa bežne používané parametre požiadaviek a odpovedí stávajú objektovými vlastnosťami, čo výrazne znižuje programátorskú záťaž. Väčšina parametrov však stále musí byť prístupná cez indexer Headers, rovnako ako parameter požiadavky Accept-Encoding v uvedenom príklade, ku ktorému nemáme prístup priamo cez vlastnosti. |
Predchádzajúci:CSS súbory a js súbory sú nasledované otáznikomBudúci:Deň sa začal!! Poďte, všetci
|