Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2021, 01:24   #1
Lexxonnel
Новичок
Джуниор
 
Регистрация: 22.02.2018
Сообщений: 2
По умолчанию Переписать HttpWebRequest в HttpClient?

Как здесь можно преобразовать привычный но устаревший httpwebrequest в httpclient асинхронным методом?
Одну часть я сделал уже(класс Connecter реализован в httpclient асинхронно, и то не без помощи. Всю голову уже изломал, может вообще здесь даже чего лишнего повыкидывать:
Код:
public bool Auth()
        {
            Connecter connecter = new Connecter();
            HttpWebRequest newRequest = connecter.GetNewRequest(connecter.OriginUrl + "login", connecter.cookies);
            System.Net.ServicePointManager.Expect100Continue = false;
            System.Net.ServicePointManager.UseNagleAlgorithm = false;
            newRequest.ServicePoint.ConnectionLimit = 15;
            ServicePointManager.FindServicePoint(new Uri(connecter.OriginUrl));
            newRequest.KeepAlive = true;
            newRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            Dictionary<string, string> parameters = new Dictionary<string, string> {
                {
                    "email",
                    this.accountEmail
                },
                {
                    "password",
                    this.accountPass
                },
                {
                    "request_type",
                    "ajax"
                }
            };
            string input = "";
            HttpWebResponse response = connecter.MakeRequest(newRequest, connecter.cookies, parameters, 1);
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                if (!reader.EndOfStream)
                {
                    input = input + reader.ReadToEnd();
                }
            }
            response.Close();
            this.cookiesG = connecter.cookies;
            return (JsonConvert.DeserializeObject<Dictionary<string, object>>(input)["status"].ToString() == "success");
        }
 
 public bool getCaptcha()
        {
            if (this.gonaStop)
            {
                this.locked = true;
                this.stopped = false;
                this.blocked = true;
                this.requestTime = 0L;
            }
            this.locked = true;
            Connecter connecter = new Connecter
            {
                cookies = this.cookiesG
            };
            HttpWebRequest newRequest = connecter.GetNewRequest(connecter.OriginUrl + "/captcha/" + this.accountToken, connecter.cookies);
            System.Net.ServicePointManager.Expect100Continue = false;
            System.Net.ServicePointManager.UseNagleAlgorithm = false;
            if (TypeRequest == 1)
            {
                newRequest.Headers["X-Requested-With"] = "XMLHttpRequest";
            }
            if (TypeRequest == 2)
            {
                newRequest.Headers["Upgrade-Insecure-Requests"] = "1";
            }
            newRequest.ServicePoint.ConnectionLimit = 100;
            ServicePointManager.FindServicePoint(new Uri(connecter.OriginUrl));
            newRequest.KeepAlive = true;
            newRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            string input = "";
            parameters = null;
            HttpWebResponse response = connecter.MakeRequest(newRequest, connecter.cookies, parameters, 2);
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                if (!reader.EndOfStream)
                {
                    input = input + reader.ReadToEnd();
                }
            }
            response.Close();           
            this.RES = input;
            this.captcha = JsonConvert.DeserializeObject<Dictionary<string, object>>(input);
            if ((this.captcha != null) && (this.captcha["status"].ToString() == "success"))
            {
                return true;
            }
            if (((this.captcha != null) && (this.captcha["error"] != null)) && (this.captcha["error"].ToString() != "null"))
            {
                this.blocked = true;
            }
            return false;
        }
 
 public string getProfileInfo()
        {
            Connecter connecter = new Connecter
            {
                cookies = this.cookiesG
            };
            this.gonaStop = false;
            HttpWebRequest newRequest = connecter.GetNewRequest(connecter.OriginUrl + "profile", connecter.cookies);
            System.Net.ServicePointManager.Expect100Continue = false;
            System.Net.ServicePointManager.UseNagleAlgorithm = false;
            newRequest.ServicePoint.ConnectionLimit = 100;
            ServicePointManager.FindServicePoint(new Uri(connecter.OriginUrl));
            newRequest.KeepAlive = true;
            newRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            string input = "";
            parameters = null;
            HttpWebResponse response = connecter.MakeRequest(newRequest, connecter.cookies, parameters, 2);
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                if (!reader.EndOfStream)
                {
                    input = input + reader.ReadToEnd();
                }
            }
            this.RES = input;
            response.Close();
            Match match = new Regex("id=\"payment_details\">(.*?)<", RegexOptions.IgnoreCase).Match(input);
            if (match.Success)
            {
                input = match.Groups[1].Value;
            }
            this.PaymentDietals = input;
            Match match2 = new Regex("id=\"payment_type\">(.*?)<", RegexOptions.IgnoreCase).Match(this.RES);
            if (match2.Success)
            {
                this.PaymentType = match2.Groups[1].Value;
            }
            string str2 = "";
            Match match3 = new Regex("name=\"csrf_profile_token\" value=\"(.*?)\"", RegexOptions.IgnoreCase).Match(this.RES);
            if (match3.Success)
            {
                str2 = match3.Groups[1].Value;
            }
            return str2;
        }
Lexxonnel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi HTTPClient формирование TIdMultiPartFormDataStream AndreyAVM Помощь студентам 0 11.11.2019 15:27
HttpWebRequest vprsc Помощь студентам 0 27.01.2013 15:46
httpwebrequest ProX_Alex C# (си шарп) 2 30.07.2012 02:20
HttpClient Apache alreadyexist Общие вопросы по Java, Java SE, Kotlin 2 13.04.2012 13:07
Apache HttpClient cs0ip Общие вопросы по Java, Java SE, Kotlin 1 02.04.2010 17:41