关于HttpWebRequest下载过程中网络连接断开的问题

qq5457237 qq5457237 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下载的方法:

/// <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启动时检查是否有未完成的下载,如果有,就启动断点续传过程。

xunni_5241

C#(Csharp)多线程HTTP并发请求(HttpWebRequest)采集蜘蛛

它会从待下载集合中取出第一个URL,将其移动到已下载集合,并创建一个HttpWebRequest对象,设置请求方法、接受类型、用户代理等属性,然后使用异步请求方法开始请求。5.

gijquery4

HttpWebRequest实现下载图片至本地

在文章《HttpWebRequest实现下载图片至本地》中,作者详细介绍了如何利用HttpWebRequest下载图片并保存到本地磁盘的过程,这对于初学者来说是一个很好的学习资料。

weixin_38658405

httpwebrequest 上传下载

在实际开发中,为了优化用户体验,我们可能会采用多线程或者异步操作来加速上传和下载过程。例如,可以将大文件分割成多个部分,同时上传或下载,以提高效率。不过,这也需要考虑并发控制和合并已传输部分的问题。

w6579106

C#中HttpWebRequest的用法详解

在处理中文数据时,需要注意编码问题,以确保数据正确传输。通过实例化`HttpWebRequest`,设置方法、内容类型和编码,以及处理响应,开发者可以轻松地实现自定义的HTTP通信。

weixin_38580959
评论 2
收藏 已收藏
分享
返回顶部
qq5457237
C# 111,128 成员 642,537 内容