public class ResponseFilter:System.IO.Stream { public ResponseFilter(System.IO.Stream sink,string _str) { _sink = sink; // // TODO: 在此处添加构造函数逻辑 // this.str = _str; } private string str = ""; private System.IO.Stream _sink; private long _position; private System.Text.Encoding end=System.Text.Encoding.GetEncoding("GB18030"); private System.Text.StringBuilder oOutput = new System.Text.StringBuilder(); // The following members of Stream must be overriden. public override bool CanRead { get { return true; } }
public override bool CanSeek { get { return true; } }
public override bool CanWrite { get { return true; } }
public override long Length { get { return 0; } }
public override long Position { get { return _position; } set { _position = value; } }
public override long Seek(long offset, System.IO.SeekOrigin direction) { return _sink.Seek(offset, direction); }
public override void SetLength(long length) { _sink.SetLength(length); }
public override void Close() { _sink.Close(); }
public override void Flush() { _sink.Flush(); }
public override int Read(byte[] buffer, int offset, int count) { return _sink.Read(buffer, offset, count); }
// The Write method actually does the filtering. public override void Write(byte[] buffer, int offset, int count) { string szBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count); string ap="action=\""; int pos=-1; if ((pos=szBuffer.IndexOf(ap) )!= -1) { int epos = szBuffer.IndexOf("\"", pos + ap.Length+1); if (epos != -1) { szBuffer= szBuffer.Remove(pos + ap.Length, epos - pos - ap.Length); }