想用HttpWebResponse作http下载程序,但是发现下载数据会出错,设定中断就没错,为什么?
System.IO.FileStream fs = new System.IO.FileStream(System.Windows.Forms.Application.StartupPath+"\\temp\\"+FileName,System.IO.FileMode.Create);
System.Net.HttpWebRequest r = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://"+Uri);
System.Net.HttpWebResponse rs = (System.Net.HttpWebResponse)r.GetResponse();
long len = rs.ContentLength ;
long times = len /1024;//每次下载1K,下载的次数
long mod = len %1024;//最后一次下载字节数
System.IO.Stream s = rs.GetResponseStream();
for(long i=0;i<times;i++)
{
byte[] byt=new byte[1024];
s.Read(byt,0,1024);
//System.Threading.Thread.Sleep(1);
System.Diagnostics.Debug.Write(System.Text.ASCIIEncoding.ASCII.GetString(byt));
fs.Write(byt,0,1024);
this.pbarDownload.BarValue = System.Convert.ToInt32(i*102400 / len);
this.downloadsize += 1024;
this.pbarTotal.BarValue = System.Convert.ToInt32(downloadsize*100/totalsize);
}
byte[] bytmod = new byte[mod];
s.Read(bytmod,0,(int)mod);
System.Diagnostics.Debug.Write(System.Text.ASCIIEncoding.ASCII.GetString(bytmod));
fs.Write(bytmod,0,(int)mod);
this.downloadsize +=mod;
this.pbarDownload.BarValue = 100;
this.pbarTotal.BarValue = System.Convert.ToInt32(downloadsize*100/totalsize);
fs.Close();
rs.Close();
在for语句中设定中断,数据就不会出错,如果不设定,有时候会传很多的0x00过来,如果用localhost下载就没问题,用远程Web服务器就有问题,奇怪的很,到底为什么,怎么解决呢?
问题点数:0、回复次数:4Top
1 楼Winston1977(Winston)回复于 2004-07-02 09:35:48 得分 0
upTop
2 楼Server_Transfer(系统崩溃,边重装边上网)回复于 2004-11-04 14:32:47 得分 0
给分了Top
3 楼xiaoslong(龙哥)回复于 2004-11-04 15:03:29 得分 0
帮你顶一下
Top
4 楼CodeBunny(新年_新ID_新公司_新的开始)回复于 2005-01-04 17:02:46 得分 0
问题是不是出在WebResponse的响应时间上?它不象WebClinet那样,不用执行完就可以执行下面的语句的Top




