[导入].net 读取网页
如果网页是使用得gb2313编码方式,那么,无论是使用WebRequest类,还是HttpWebRequest类,还是采用WebClient都避免不了对获取的“字符串”内容进行再编码。
基本的方式是按byte读取,网页信息。再设置当前编码方式为“gb2312”,再通过Encoding类对byte数组进行组装。核心的代码是
int bytes = objStream.Read(read, 0, 512);
while(..){
System.Text.Encoding encode = System.Text.Encoding.GetEncoding("gb2312");
Console.Write(encode.GetString(read, 0, bytes));
}
采用HttpWebRequest逐一读取字节的代码案例
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
string sURL;
sURL = "http://www.maketop.net";
HttpWebRequest wrGETURL;
wrGETURL = (HttpWebRequest)WebRequest.Create(sURL);
wrGETURL.UserAgent = "test robot";
Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
Byte[] read = new Byte[512];
int bytes = objStream.Read(read, 0, 512);
while(bytes > 0)
{
System.Text.Encoding encode = System.Text.Encoding.GetEncoding("gb2312");
Console.Write(encode.GetString(read, 0, bytes));
bytes = objStream.Read(read, 0, 512);
}
Console.ReadLine();
}
采用WebClient更简便的方法
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
WebClient wc = new WebClient();
byte[] response = wc.DownloadData("http://www.maketop.net");
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("gb2312");
Console.WriteLine(encoding.GetString(response));
Console.ReadLine();
}
文章来源:http://www.codeguru.cn/ShowThread.aspx?PostID=1292
浙公网安备 33010602011771号