那位哥哥能告诉我以下代码什么地方有错误?帮忙看看吧,没几行。

DataBind DataBind 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用以下代码下载一个GB2312的网页,可是经常下载到一半左右或者是快要完成的时候就自动的结束了。表面上看是下载结束了,而且没有异常发生,就像是http流结束了。可是看文件就知道,不完整。
为什么呢?
我用的测试网页是http://news.sina.com.cn/old1000/news1000_20050204.shtml,这个网页大约有2M左右。

public static int BUFFER_SIZE = 32768;
public static string GetURLContentString(string url)
{
//StringBuilder buffer = new StringBuilder();
byte[] buffer = null;
try
{

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

httpWebRequest.KeepAlive = false;

HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

Stream streamResponse=httpWebResponse.GetResponseStream();
BinaryReader binaryReader = new BinaryReader(streamResponse);

buffer = null;

byte[] blockBuffer = binaryReader.ReadBytes(BUFFER_SIZE);
while (blockBuffer.Length > 0)
{

if(buffer == null)
{
buffer = new byte[blockBuffer.Length];
blockBuffer.CopyTo(buffer,0);
}
else
{
byte[] bufferTmp = new byte[blockBuffer.Length + buffer.Length];
buffer.CopyTo(bufferTmp,0);
Array.Copy(blockBuffer,0,bufferTmp,buffer.Length - 1, blockBuffer.Length);
buffer = bufferTmp;
}
if(blockBuffer.Length < BUFFER_SIZE)
break;
blockBuffer = binaryReader.ReadBytes(BUFFER_SIZE);
}
binaryReader.Close();

streamResponse.Close();

httpWebResponse.Close();

return Encoding.GetEncoding("GB2312").GetString(buffer, 0, buffer.Length);

}
catch(ArgumentException e)
{
Console.WriteLine("\nThe second HttpWebRequest object has raised an Argument Exception as 'Connection' Property is set to 'Close'");
Console.WriteLine("\n{0}",e.Message);
}
catch(WebException e)
{
Console.WriteLine("WebException raised!");
Console.WriteLine("\n{0}",e.Message);
Console.WriteLine("\n{0}",e.Status);
}
catch(Exception e)
{
Console.WriteLine("Exception raised!");
Console.WriteLine("Source :{0} " , e.Source);
Console.WriteLine("Message :{0} " , e.Message);
}

return buffer.ToString();
}
...全文
评论 20
收藏 已收藏
分享
返回顶部
DataBind
C# 111,129 成员 642,538 内容