C # - Как проверить, если пользователь вошел в сеть с помощью HttpWebRequest - PullRequest
0 голосов
/ 14 мая 2018

Я написал функцию C # с использованием HttpWebRequest , которая проверяет, успешно ли пользователь вошел в сеть и сколько времени в миллисекундах ему потребовалось для входа. Проблема в том, что, хотя я использовал попытку и ловлю, когда я ввожу неправильное имя пользователя и пароль, он все равно не будет ловить, и я не могу проверить, удалось ли это. Как я могу проверить, действительно ли пользователь вошел в систему?

private int[] LoginCheck(string TargetWebApp)
        {
            int[] result = new int[2];
            var watch = System.Diagnostics.Stopwatch.StartNew();
            try
            {


                string formUrl = "https://XXXXX.com/user/login/default"; // NOTE: This is the URL the form POSTs to, not the URL of the form (you can find this in the "action" attribute of the HTML's form tag
                string formParams = string.Format("email_address={0}&password={1}", "XXXXX", "XXXXX");
                string cookieHeader;
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(formUrl);
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                req.ContentType = "application/x-www-form-urlencoded";
                req.Method = "POST";
                byte[] bytes = Encoding.ASCII.GetBytes(formParams);
                req.ContentLength = bytes.Length;
                using (Stream os = req.GetRequestStream())
                {
                    os.Write(bytes, 0, bytes.Length);
                }
                HttpWebResponse resp = req.GetResponse() as HttpWebResponse;;
                var elapsedMs = watch.ElapsedMilliseconds;
                watch.Stop();
                Console.WriteLine("Login to WebApp succeed in {0} Milliseconds", elapsedMs);
                cookieHeader = resp.Headers["Set-cookie"];
                result[0] = 1;
                result[1] = (int)elapsedMs;

            }
            catch (Exception e)
            {
                //Any exception will return false.
                Console.WriteLine(e.Message);
                result[0] = 0;
                result[1] = 0;
            }

            return result;
        }

1 Ответ

0 голосов
/ 14 мая 2018

Вы должны использовать приведенный ниже код для получения статуса ответа, responseCode 401 для несанкционированного ответа.

var isInvalidAccess = resp.StatusCode == HttpStatusCode.Unauthorized;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...