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

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

    ......
  • 相关阅读:
    How to solve the problem "A project with an Output Type of Class Library cannot be started directly "
    Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
    JavaScript实现startWith、endWith效果函数
    不同格式证书导入keystore方法
    用KeyTool生成安全证书
    怎样让操作系统的虚拟机退出全屏?
    对https的理解
    JDK中keytool常用命令
    百折不回结局凄惨的金庸反角
    主题数据库的特征
  • 原文地址:https://www.cnblogs.com/shawen/p/1745210.html
Copyright © 2020-2023  润新知