问题描述
在.NET应用程序开发中,很多时候需要使用程序向远程的API发起HTTP请求。而.NET的程序集内置了一个可以发起HTTP请求的类:WebClient
,WebClient
实现了下载/上传的一些方法,如:DownloadData
,DownloadFile
,DownloadString
,OpenRead
,OpenWrite
,UploadData
,UploadFile
,UploadString
,UploadValues
等等。这些方法可以方便我们在.NET开发中更方便地实现字符串、或者文件,或者数据流的上传或者下载功能。
但如果远程服务速度比较慢,遇到请求超时的情况,WebClient是不能直接设置请求超时时间的(默认的超时时长为100秒),也就是说直接使用WebClient的情况下,如果远程服务在100秒内还未响应完成,则会超时。
那么,如何设置WebClient的超时时长呢?
方案一
重写WebClient的GetWebRequest()
方法,这样可以设置超时时长,如下:
使用WebClient的地方换成MyWebClient,如:
方案二
重写WebClient的GetWebRequest
,同时新增设置超时时长的公开属性,如下:
调用示例代码:
方案三
不使用WebClient,而使用HttpWebRequest
,因为HttpWebRequest
支持设置Timeout
的属性,如下:
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册