재미있는 약간의 도전.
StreamWatcher.cs
public class StreamWatcher : Stream
{
private Stream _base;
private MemoryStream _memoryStream = new MemoryStream();
public StreamWatcher(Stream stream)
{
_base = stream;
}
public override void Flush()
{
_base.Flush();
}
public override int Read(byte[] buffer, int offset, int count)
{
return _base.Read(buffer, offset, count);
}
public override void Write(byte[] buffer, int offset, int count)
{
_memoryStream.Write(buffer, offset, count);
_base.Write(buffer, offset, count);
}
public override string ToString()
{
return Encoding.UTF8.GetString(_memoryStream.ToArray());
}
#region Rest of the overrides
public override bool CanRead
{
get { throw new NotImplementedException(); }
}
public override bool CanSeek
{
get { throw new NotImplementedException(); }
}
public override bool CanWrite
{
get { throw new NotImplementedException(); }
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotImplementedException();
}
public override void SetLength(long value)
{
throw new NotImplementedException();
}
public override long Length
{
get { throw new NotImplementedException(); }
}
public override long Position
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
#endregion
}
TitleModule.cs
public class TitleModule : IHttpModule
{
public void Dispose()
{
}
private static Regex regex = new Regex(@"(?<=<title>)[\w\s\r\n]*?(?=</title)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private StreamWatcher _watcher;
public void Init(HttpApplication context)
{
context.BeginRequest += (o, e) =>
{
_watcher = new StreamWatcher(context.Response.Filter);
context.Response.Filter = _watcher;
};
context.EndRequest += (o, e) =>
{
string value = _watcher.ToString();
Trace.WriteLine(regex.Match(value).Value.Trim());
};
}
}
당신은 "태그에 어떤 문자열을 추출"무엇을 의미합니까? 요청자에게 다시 전송되는 응답을 조작하려고합니까? 당신이 무엇을하려고하는지 명확하지 않습니다. – NerdFury
죄송합니다. 코드 블록에 간격을 두지 않으면 내 HTML 태그가 표시되지 않는다는 것을 잊었습니다. 응답을 조작 할 필요가 없으며 제목 태그 안의 문자열을 추출하면됩니다. – spilliton
명확히하기 위해 응답에서 콘텐츠를 가져 오려고하거나 콘텐츠에서 태그를 구문 분석하려고합니까? –