Я использую следующую функцию для навигации по URL-адресам в моем коде winform C#.C# HttpWebRequest IOException
Я думаю, что код хорошо, но когда он пытается установить соединение по адресу 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-адресу вы пытаетесь подключиться? – f2lollpll
URL-адреса различаются. Не один URL-адрес, если вы имели в виду это. –