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

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

    ......
  • 相关阅读:
    [iOS 主要框架的总结]
    [无线传感器 网络中的节点定位技术]
    [JAVA 多种方式读取文件]
    [IOS swift对比oc]
    [IOS 静态库]
    [U3D 导出Xcode工程包,用Xcode给U3D脚本传递参数]
    [U3D 添加大地、天空,用第一视角看看自己做的世界]
    [U3D 画起重机,绑脚本和控制它运动的基本操作]
    Flutter 国际化适配
    Error:Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Coul完美解决
  • 原文地址:https://www.cnblogs.com/shawen/p/1745210.html
Copyright © 2011-2022 走看看