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

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

  • 相关阅读:
    背包问题
    计蒜客lev3
    线段树BIT操作总结
    图论题收集
    Codeforces Round #607 (Div. 2) 训练总结及A-F题解
    2-sat 学习笔记
    洛谷 P3338 【ZJOI2014】力/BZOJ 3527 力 题解
    $noi.ac$ #51 array 题解
    洛谷 P3292 【SCOI2016】幸运数字/BZOJ 4568 幸运数字 题解
    洛谷 P5283 【十二省联考2019】异或粽子 题解
  • 原文地址:https://www.cnblogs.com/top5/p/1764212.html
Copyright © 2011-2022 走看看