关于HttpWebRequest下载过程中网络连接断开的问题
下载的方法:
调用下载方法的线程:
我设断点调试时测试断网,运行很正常。我不设断点,下载过程中断开网络连接,结果就没反应了,这是和解啊?相当苦闷。。。
/// <summary>
/// 下载文件
/// </summary>
/// <param name="url">文件路径</param>
/// <param name="startPos">起始位置</param>
/// <param name="bytesCount">读取字节数</param>
/// <returns></returns>
public byte[] DownLoadFile(string url, int startPos, int bytesCount)
{
ServicePointManager.DefaultConnectionLimit = 100;
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
request.KeepAlive = false;
request.AddRange(startPos, startPos + bytesCount - 1);
System.Net.WebResponse response =null ;
try
{
Console.WriteLine("请求数据");
response = request.GetResponse();
}
catch (WebException wex)
{
Console.WriteLine("请求数据WebException");
request.Abort();
throw wex;
}
catch (Exception ex)
{
Console.WriteLine("请求数据Exception");
request.Abort();
throw ex;
}
try
{
System.IO.Stream receiveStream = response.GetResponseStream();
System.IO.BinaryReader readStream = new System.IO.BinaryReader(receiveStream);
byte[] buffer = new byte[0];
byte[] read = new byte[256];
int count = readStream.Read(read, 0, 256);
while (count > 0)
{
Array.Resize<byte>(ref buffer, buffer.Length + count);
Array.Copy(read, 0, buffer, buffer.Length - count, count);
count = readStream.Read(read, 0, 256);
}
readStream.Close();
return buffer;
}
finally
{
response.Close();
}
}
}
调用下载方法的线程:
byte[] buffer = null;
//当服务器返回的数据长度不等于文件长度时,下载完成
while (startPos < FileSize)
{
string errorInfo = null;
try
{
buffer = HttpDownload.DownLoadFile(url, (int)startPos, blockSize);
returnSize = buffer.Length;
startPos += returnSize;
WriteToFile(buffer);
Percent = (int)Math.Floor(startPos * 100.0 / FileSize);
}
catch (WebException wex)
{
errorInfo = "连接失败";
Thread.Sleep(3000);
}
catch (Exception ex)
{
errorInfo = "连接失败";
Thread.Sleep(3000);
}
}
我设断点调试时测试断网,运行很正常。我不设断点,下载过程中断开网络连接,结果就没反应了,这是和解啊?相当苦闷。。。
...全文
相关推荐
unity-HttpWebRequest下载
例如,iOS可能限制了并发连接的数量,需要妥善管理下载任务;而Android则需要处理文件权限问题。同时,对于这两个平台,可能需要在App启动时检查是否有未完成的下载,如果有,就启动断点续传过程。
C#(Csharp)多线程HTTP并发请求(HttpWebRequest)采集蜘蛛
它会从待下载集合中取出第一个URL,将其移动到已下载集合,并创建一个HttpWebRequest对象,设置请求方法、接受类型、用户代理等属性,然后使用异步请求方法开始请求。5.
HttpWebRequest实现下载图片至本地
在文章《HttpWebRequest实现下载图片至本地》中,作者详细介绍了如何利用HttpWebRequest下载图片并保存到本地磁盘的过程,这对于初学者来说是一个很好的学习资料。
httpwebrequest 上传下载
在实际开发中,为了优化用户体验,我们可能会采用多线程或者异步操作来加速上传和下载过程。例如,可以将大文件分割成多个部分,同时上传或下载,以提高效率。不过,这也需要考虑并发控制和合并已传输部分的问题。
C#中HttpWebRequest的用法详解
在处理中文数据时,需要注意编码问题,以确保数据正确传输。通过实例化`HttpWebRequest`,设置方法、内容类型和编码,以及处理响应,开发者可以轻松地实现自定义的HTTP通信。


