zoukankan      html  css  js  c++  java
  • 监控HTTP(1)

    在配置IHttpModule的实现类可以通过:

    HttpRequest:

    得到HTTP请求的正文信息: 

    request.InputStream.Position = 0;//设置流的位置
      StreamReader reader = new StreamReader(request.InputStream);//request请求流
      string aa = reader.ReadToEnd();
      request.InputStream.Seek(0, SeekOrigin.End);//还原到原来的位置

    得到请求的头部信息:

     HttpRequest request = m_application.Context.Request;

    string head = string.Empty;
    for (int i = 0; i < request.Headers.Count; i++)
           {
               head += request.Headers.GetKey(i) + ":" + request.Headers[i]+"\n";
         }

    HttpResponse的response.OutputStream流不能读只能写,但其提供了一个过滤器要使用前需要声明:

      HttpApplication application = sender as HttpApplication;
                string[] temp = application.Request.CurrentExecutionFilePath.Split('.');//虚拟路径
                if (temp.Length > 0)
                {
                    application.Response.Filter = new RawFilter(application.Response.Filter);
                    RawFilter filter = (RawFilter)application.Response.Filter;
                    filter.OnRawDataRecordedEvent += new EventHandler(filter_OnRawDataRecordedEvent);
                }

      public class RawDataEventArgs : EventArgs
        {
            private string sourceCode;
            public RawDataEventArgs(string SourceCode)
            {
                this.sourceCode = SourceCode;
            }

            public string SourceCode
            {
                get { return sourceCode; }
                set { sourceCode = value; }
            }
        }

        //自定义过滤器
        public class RawFilter : Stream
        {
            Stream responseStream;
            long position;
            StringBuilder responseHtml;

            /*当原始数据采集成功后激发*/
            public event EventHandler OnRawDataRecordedEvent;

            public RawFilter(Stream inputStream)
            {
                responseStream = inputStream;
                responseHtml = new StringBuilder();
            }
            public override bool CanRead
            {
                get { return true; }
            }

            public override bool CanSeek
            {
                get { return true; }
            }

            public override bool CanWrite
            {
                get { return true; }
            }

            public override void Flush()
            {
                responseStream.Flush();
            }

            public override long Length
            {
                get { return 0; }
            }

            public override long Position
            {
                get
                {
                    return position;
                }
                set
                {
                    position = value;
                }
            }

            public override int Read(byte[] buffer, int offset, int count)
            {
                return responseStream.Read(buffer, offset, count);
            }

            public override long Seek(long offset, SeekOrigin origin)
            {
                return responseStream.Seek(offset, origin);
            }

            public override void SetLength(long value)
            {
                responseStream.SetLength(value);
            }
            /*关键的点,在HttpResponse 输入内容的时候,一定会调用此方法输入数据,所以要在此方法内截获数据,经测试能获取webservice时的xml*/
            public override void Write(byte[] buffer, int offset, int count)
            {
                string aa = System.Text.UTF8Encoding.UTF8.GetString(buffer);

                responseStream.Write(buffer, offset, count);
            }
        }

  • 相关阅读:
    “朋友圈”又添好友,DataPipeline与统信服务器操作系统完成产品互认证
    DataPipeline与飞腾完成产品兼容性互认证,携手共建自主IT底层生态
    「山东城商行联盟」数据库准实时数据采集系统上线,DataPipeline助力城市商业银行加快数字化转型
    DataPipeline 实时数据融合产品入驻青云云市场,催化企业数据价值释放
    2020年净利暴涨1288%,遨森电商携手DataPipeline构建实时数据融合体系跑出加速度!
    宏昆酒店集团携手DataPipeline打造实时数据融合平台,酒店业精益管理的新秘诀
    销售易携手DataPipeline,推动“实时感知主动决策客户成功”的变革!
    DataPipeline助力悠星网络出海,以实时数据管理护航爆款游戏
    FIGR/IR业务流程
    ABAP调用堆栈
  • 原文地址:https://www.cnblogs.com/fujinliang/p/2839117.html
Copyright © 2011-2022 走看看