c# 网页html 操作超时,C# WebClient 无法设置超时时间的解决办法

WebClient 无法设置请求超时时间,在执行请求时遇到网络不通等情况会很大几率造成app挂起。

我们可以从WebClient派生一个新的类,重载GetWebRequest方法。

using System;

using System.Collections.Generic;

using System.Text;

using System.Net;

/// 

/// 为WebClient增加超时时间

/// 从WebClient派生一个新的类,重载GetWebRequest方法

/// 

public class NewWebClient : WebClient

{

private int _timeout;

/// 

/// 超时时间(毫秒)

/// 

public int Timeout

{

get

{

return _timeout;

}

set

{

_timeout = value;

}

}

public NewWebClient()

{

this._timeout = 60000;

}

public NewWebClient(int timeout)

{

this._timeout = timeout;

}

protected override WebRequest GetWebRequest(Uri address)

{

var result = base.GetWebRequest(address);

result.Timeout = this._timeout;

return result;

}

}

使用与WebClient相同的调用方式调用建好的类,就可以设置超时时间:NewWebClient myWebClient = new NewWebClient(30 * 60 * 1000);

byte[] myDataBuffer = myWebClient.DownloadData(url);

string result = Encoding.GetEncoding("GB2312").GetString(myDataBuffer);

测试可用,欢迎各位反馈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值