赞
踩
.net框架下有一个简单但很强大的类HttpListener。这个类几行代码就能完成一个简单的服务器功能。虽然以下内容在实际运行中几乎毫无价值,但是也不失为理解HTTP请求过程的细节原理的好途径。
- <pre name="code" class="html">HttpListener httpListener = new HttpListener();
-
- httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
- httpListener.Prefixes.Add("http://localhost:8080/");
- httpListener.Start();
- new Thread(new ThreadStart(delegate
- {
- while (true)
- {
-
- HttpListenerContext httpListenerContext = httpListener.GetContext();
- httpListenerContext.Response.StatusCode = 200;
- using (StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream))
- {
- writer.WriteLine("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><title>测试服务器</title></head><body>");
- writer.WriteLine("<div style=\"height:20px;color:blue;text-align:center;\"><p> hello</p></div>");
- writer.WriteLine("<ul>");
- writer.WriteLine("</ul>");
- writer.WriteLine("</body></html>");
-
- }
-
- }
- })).Start();
AuthenticationSchemes枚举类有以下值:
Anonymous:默认值,允许任意的客户机进行连接,不需要身份验证。
Basic:要求提供纯文本(64位编码)用户名和密码来进行验证。
Digest:类似与基本身份验证,但是用户名和密码使用一个简单密码散列进行传输。
Ntlm: 指定 NTLM 身份验证(只有IE支持)。
IntegratedWindowsAuthentication:指定Windows身份验证。
Negotiate: 和客户端协商以确定身份验证方案。如果客户端和服务器均支持 Kerberos,则使用 Kerberos;否则使用 Ntlm
None:不进行身份验证。
2. GET方法
3.异步
publicstaticstring GetUrltoHtml(string Url,string type) { try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url); // Get the response instance. System.Net.WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); // Dim reader As StreamReader = New StreamReader(respStream) using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type))) { return reader.ReadToEnd(); } } catch (System.Exception ex) { //errorMsg = ex.Message; } return""; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。