• 如何截取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方法进行异步处理,在这个方法的内部首先实现的就是重新监听。然后进行自己的处理。

        呵呵,这段代码有什么其他用处待考虑。 

  • 相关阅读:
    Centos7:mariadb替换mysql
    CentOS5 部署 戴尔OMSA
    《Zero MQ》
    可扩展的Web架构和分布式系统
    队列实现
    超级好用的正则表达式网站
    <转>undefined与null的区别
    JS事件
    sublime text 3 快捷键
    设置className的方式(不使用setAttribute)
  • 原文地址:https://www.cnblogs.com/tommyli/p/1744666.html
Copyright © 2020-2023  润新知