在.NET Web请求超时NET、Web

2023-09-05 02:26:03 作者:怎样记住你的容颜

我想使一个Web服务请求调用一个第三方网站,谁的服务器是有点不可靠的。有没有一种方法可以让我在一个请求到该网站设置超时?事情是这样的伪code:

 尝试// 1分钟
{
    //使Web请求在这里
    使用(Web客户端的客户端新的Web客户端())//...etc。
}
抓住
{
}
 

解决方案

您可以使用的超时属性:

  VAR请求=(HttpWebRequest的)WebRequest.Create(http://www.google.com);
request.Timeout = 1000; //超时后1000毫秒
使用(VAR流= request.GetResponse()。GetResponseStream())
使用(VAR读卡器=新的StreamReader(流))
{
    Console.WriteLine(reader.ReadToEnd());
}
 
ASP.NET 页面请求超时时间 设置

更新:

要回答有关 XElement.Load(URI)的评论部分的问题,你可以做到以下几点:

  VAR请求=(HttpWebRequest的)WebRequest.Create(http://stackoverflow.com/feeds);
request.Timeout = 1000; //超时后1000毫秒
使用(VAR流= request.GetResponse()。GetResponseStream())
使用(VAR读卡器=新的StreamReader(流))
{
    VAR XEL = XElement.Load(读卡器);
}
 

I am trying to make a web service request call to a third part web site who's server is a little unreliable. Is there a way I can set a timeout on a request to this site? Something like this pseudo code:

try // for 1 minute
{
    // Make web request here
    using (WebClient client new WebClient()) //...etc.
}
catch
{
}

解决方案

You could use the Timeout property:

var request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.Timeout = 1000; //Timeout after 1000 ms
using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream))
{
    Console.WriteLine(reader.ReadToEnd());
}

UPDATE:

To answer the question in the comment section about XElement.Load(uri) you could do the following:

var request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/feeds");
request.Timeout = 1000; //Timeout after 1000 ms
using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream))
{
    var xel = XElement.Load(reader);
}