自己想做一个抓取网页的工具,用WebRequest就可以实现,但是不好判断GBK或者UTF8编码,所以我选择了用TcpClient自己去抓取。
问题也随之而来,Chunk传输编码和GZip压缩。GZip的话,在System.IO.Compression下,就有现成的函数。但Chunk解码需要手动去实现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Compression;
public class ChunkDecode
{
#region -- Private Fields --
private IList<byte[]> _dataList = new List<byte[]>();
#endregion
#region -- Method --
public ChunkDecode(byte[] data)
{
long pos = 0, start = 0;
long Chunk_Size = 0;
byte[] buff;
while (pos < data.Length)
{
while (data[pos] != 13)
{
if (pos < data.Length)
{
pos++;
}