【发布时间】:2012-03-05 17:52:06
【问题描述】:
我正在使用以下函数导航到我的 c# winform 代码中的 URL 地址。
我认为,代码很好,但是当它尝试连接到 URL 地址时,它失败并抛出 IOException 错误:
我的问题是:
如何在代码中添加检查以确保成功建立与 URL 的连接,如果未成功连接,它将重试直到连接成功?
public String WebRequestNavigate(string url)
{
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
if (url != "")
{
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.KeepAlive = false;
try
{
HttpWebResponse resp = (HttpWebResponse)myReq.GetResponse();
Stream stream = resp.GetResponseStream();
String test = "";
int count = 0;
do
{
**count = stream.Read(buf, 0, buf.Length);**
if (count != 0)
{
test = Encoding.UTF8.GetString(buf, 0, count);
sb.Append(test);
}
}
while (count > 0);
stream.Close();
}
catch (WebException ex)
{
}
}
return sb.ToString();
}
感谢朋友们的所有回答。他们都是正确的。但是,我终于发现了我的错误并纠正了它。
问题是我试图捕获 WebException ,但是,我得到了 IOException 的错误。
我将 WebException 更改为 IOException 并将我的代码更正如下:
catch (IOException ex)
{
System.Threading.Thread.Sleep(500);
myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.KeepAlive = false;
}
我使用了您对 Thread.Sleep 的建议,以便在尝试新的 URL 连接之前让我的代码等待。这解决了我的问题 %100。
很抱歉耽搁了您的时间,但您对我的帮助很大并提供了见解。谢谢!
【问题讨论】:
-
我能问一下您要连接的网址是什么吗?
-
网址地址不同。如果你是这个意思,不是一个 url 地址。
标签: c#