|
|
Geplaatst op 21-12-2015 11:00:26
|
|
|

Om luisteraars voor het HTTP-protocol verder te vereenvoudigen, . .NET levert de HttpListener-klasse in de naamruimte System.Net. Bij dit object is . .NET biedt een reeks gerelateerde objecten die HTTP-verwerkingswerk encapsuleren. Let op: deze klasse gebruikt Http.sys systeemcomponenten om het werk te doen, dus het kan alleen worden gebruikt op Windows XPSP2- of Server 2003- of latere besturingssystemen.
De HttpListener-klasse vereenvoudigt de luisteroperatie verder en hoeft alleen het luisteradres, poortnummer en virtueel pad via de stringmethode te geven om het luisterwerk te starten.
Na het starten van het luisteren blokkeert de GetContext-methode de thread; wanneer het verzoek van de client arriveert, geeft HttpListener een HttpListenerContext-object terug als algemene proxy voor het verwerken van clientverzoeken, via de Request-eigenschap van het proxy-object kunnen we een object van het type HttpListenerRequest krijgen dat de verzoekparameters vertegenwoordigt, dit object objectificeert de meeste verzoekparameters, dus , kunnen we de verzoekparameters krijgen via een reeks eigenschappen die het biedt. Bijvoorbeeld, de eigenschap HttpMethod van HttpListenerRequest geeft het gevraagde methodetype. Via het Response-attribuut van de proxy kunnen we een responsverwerkingsobject van het type HttpListenerResponse verkrijgen, dat de gegevens en operaties van de respons encapsuleert, wat de programmeerbelasting van het antwoord sterk vereenvoudigt, en het werkproces is als volgt:
//检查系统是否支持 als (! HttpListener.IsSupported)
{ gooi nieuw System.InvalidOperationException( "Om HttpListener te gebruiken, moet je Windows XP SP2 of Server 2003 of later gebruiken!" );
} Let op dat het voorvoegsel moet eindigen met een / voorover-slash string[] voorvoegsels = nieuwe string[] { "http://localhost:49152/" }; Creëer een luisteraar. HttpListener listener = nieuwe HttpListener(); Voeg het voorvoegsel van de monitor toe. foreach (string s in voorvoegsels)
{ luisteraar. Voorvoegsels.Toevoeging(en);
} Begin maar te luisteren luisteraar. Start(); Console.WriteLine(" luisteren..."); terwijl (waar)
{ Opmerking: De GetContext-methode blokkeert de thread totdat het verzoek arriveert HttpListenerContext context = luisteraar. GetContext(); Haal het request-object op HttpListenerRequest request = context. Verzoek; Console.WriteLine("{0} {1} HTTP/1.1", verzoek. HttpMethod, verzoek. RawUrl); Console.WriteLine("Accept: {0}", string. Join(",", verzoek. AcceptTypes)); Console.WriteLine("Accept-Language: {0}", Snaar. Join(",", verzoek. UserLanguages)); Console.WriteLine("User-Agent: {0}", verzoek. UserAgent); Console.WriteLine("Accept-Encoding: {0}", verzoek. Headers["Accept-Coding"]); Console.WriteLine("Verbinding: {0}", verzoek. KeepAliv e ? "Keep-Alive": "dichtbij"); Console.WriteLine("Host: {0}", verzoek. UserHostName); Console.WriteLine("Pragma: {0}", verzoek. Headers["Pragma"]); Haal het responsdoel HttpListenerResponse antwoord = context. Respons; Stel de responsinhoud samen SnaarresponsSnaar = @"<html> <head><title>Van HttpListener Server</title></head> <body><h1>Hallo mensen.</h1></body> ";</html> Stel de inhoud van de responsheader in, lengte en codering in reactie. ContentLength64 = System.Text.Encoding.UTF8.GetByteCount(responseString); reactie. ContentType = "text/html; charset=UTF-8"; Uitvoerresponsen System.IO.Stream output = respons. OutputStream; System.IO.StreamWriter writer = nieuwe System.IO.StreamWriter (output); schrijver. Write(responseString); De uitgangsstroom moet worden uitgeschakeld schrijver. Close(); if (Console.KeyAvailable) pauze;
} Sluit de server uit luisteraar. Stop();
Bij gebruik van HttpListener worden veelgebruikte verzoek- en responsparameters objecteigenschappen, wat de programmeerbelasting aanzienlijk vermindert. De meeste parameters moeten echter nog steeds worden benaderd via de Headers-indexer, net als de Accept-Encoding requestparameter in het bovenstaande voorbeeld, die we niet direct via de eigenschappen kunnen bereiken. |
Vorig:CSS-bestanden en js-bestanden worden gevolgd door een vraagtekenVolgend:De dag is begonnen!! Kom op, iedereen
|