asp.net 截取Http请求的实现代码 |
本文标签:asp.net,截取Http 1:前言 本篇文章比较短,主要是因为我的一个随想产生的一段代码 。 这段代码的功能你可以叫做是简单的Http服务器也可以叫做Http请求截取 。它实现的功能就是截取Http请求然后自己做处理 。 2:代码 复制代码 代码如下: public class HttpServer : IDisposable { private HttpListener listener; public void Start() { listener = new HttpListener(); listener.Prefixes.Add("http://localhost/"); listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication | AuthenticationSchemes.Anonymous; listener.Start(); listener.BeginGetContext(GetContext, null); } private void GetContext(IAsyncResult ar) { HttpListenerRequest Request; HttpListenerResponse Response; try { HttpListenerContext ctx = listener.EndGetContext(ar); Request = ctx.Request; Response = ctx.Response; //setup waiting for the next request listener.BeginGetContext(GetContext, null); } catch (InvalidOperationException) { return; } catch (HttpListenerException) { return; } try { var sw = new StreamWriter(Response.OutputStream); sw.Write(@"<html><body><p>你的请求已经被截取</p></body></html>"); sw.Flush(); } finally { Response.OutputStream.Flush(); Response.Close(); } } public void Dispose() { if (listener != null) listener.Stop(); } } 3:简单解释一下 代码的核心就是HttpListener,通过它去侦听一个端口,当有请求的时候BeginGetContext交给GetContext方法进行异步处理,在这个方法的内部首先实现的就是重新监听 。然后进行自己的处理 。 呵呵,这段代码有什么其他用处待考虑 。 |