httpwebrequest дает ложные результаты - PullRequest
0 голосов
/ 07 января 2019
 if (IsURLValid(url))
            {
                Uri requestUri = new Uri(url);
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
                httpWebRequest.Proxy = WebRequest.GetSystemWebProxy();
                httpWebRequest.Timeout = 3000;
                httpWebRequest.Method = "HEAD";
                //httpWebRequest.AllowAutoRedirect = true;
                httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0";
                httpWebRequest.Accept = "*/*";
                httpWebRequest.ServicePoint.Expect100Continue = false;
                httpWebRequest.AllowAutoRedirect = true;
                httpWebRequest.MaximumAutomaticRedirections = 4;
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                httpWebResponse.Close();
                MessageBox.Show(httpWebResponse.ResponseUri.ToString());
                if ((httpWebResponse.StatusCode == HttpStatusCode.OK) || (httpWebResponse.StatusCode == HttpStatusCode.Redirect))
                {

                    return true;
                }
                else
                {
                    return false;
                }
            }
            return false;
        }
        catch (WebException)
        {
            return false;
        }
    }

Приведенный выше код работает хорошо, но дает ложные результаты. Приведенный ниже URL действителен, однако полученный нами результат недействителен.

https://forum.unity.com/threads/clean-way-to-talk-to-external-application-c-to-ros-c-node.418849/

Я также пробовал проверять в Интернете, эти проверки также дают ту же ошибку. https://httpstatus.io/ проверьте URL-адрес единства в httpstatus. У кого-нибудь есть идея, почему это так?

1 Ответ

0 голосов
/ 07 января 2019

Вы можете попробовать это:

httpWebRequest.CookieContainer = new CookieContainer();

В противном случае ваш (HttpWebResponse)httpWebRequest.GetResponse(); сгенерирует исключение, и вы получите return false; из вашего оператора catch.

См. для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...