Покажите пример многопоточной отправки POST запросов - C#

Узнай цену своей работы

Формулировка задачи:

Суть проблемы - нужно пролайкать профили пользователей на одном сайте. Я успешно авторизуюсь и сохраняю куки в
 static CookieContainer container = new CookieContainer();
Далее мне нужно открыть одну страницу и спарсить оттуда секретный ключ, а потом отправить POST запрос, в котором этот секретный ключ используется. В многопоточном (асинхронном) режиме. Т.е. Прошу показать, как сделать POST запросы к странице в многопоточном режиме. Реализация GET и POST методов:
 public static string Post(string url, string data, bool clearCookie, ref CookieContainer container, bool allow_redirect = true, WebProxy proxy = null)
        {
            string output = null;
            try
            {
                HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
                if (clearCookie) WebReq.CookieContainer = new CookieContainer();
                else WebReq.CookieContainer = container;
                byte[] buffer = Encoding.UTF8.GetBytes(data);
                WebReq.Method = "POST";
                WebReq.AllowAutoRedirect = allow_redirect;
                WebReq.ContentType = "application/x-www-form-urlencoded";
                WebReq.ContentLength = buffer.Length;
                Stream PostData = WebReq.GetRequestStream();
                PostData.Write(buffer, 0, buffer.Length);
                PostData.Close();
                HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
                Stream Answer = WebResp.GetResponseStream();
                container = WebReq.CookieContainer;
                StreamReader _Answer = new StreamReader(Answer, Encoding.UTF8);
                output = _Answer.ReadToEnd();
                return output.Trim() + "\n";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
 
        public static string Get(string url, bool clearCookie, ref CookieContainer container, WebProxy proxy = null)
        {
            string output = null;
            try
            {
                HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
                if (clearCookie) WebReq.CookieContainer = new CookieContainer();
                else WebReq.CookieContainer = container;
                WebReq.Method = "GET";
                WebReq.AllowAutoRedirect = true;
                WebReq.ContentType = "application/x-www-form-urlencoded";
 
                HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
                Stream Answer = WebResp.GetResponseStream();
                container = WebReq.CookieContainer;
                StreamReader _Answer = new StreamReader(Answer, Encoding.UTF8);
                output = _Answer.ReadToEnd();
                return output.Trim() + "\n";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

Решение задачи: «Покажите пример многопоточной отправки POST запросов»

textual
Листинг программы
    class Program
    {
        static void Main(string[] args)
        {
            ВызывающийМетод();
            Console.WriteLine("После асинк");
            Console.Read();
        }
 
        static async void ВызывающийМетод()
        {
            //Итак, теперь await запускает метод
            //Приостанавливает все действия после него
            //Возвращает работу вызывающему коду - то есть Main'у
            //Ну и распаковывает Task<string> в string
            string строка = await Метод();
            Console.WriteLine(строка);
        }
 
        /// <summary>
        /// Этот метод реализует действия в новом потоке
        /// с помощью Task.Run
        /// </summary>
        /// <returns>возвращает Task<string></returns>
        static async Task<string> Метод()
        {
            return await Task.Run<string>(() =>
            {
                Thread.Sleep(3000);
                return "Тест";
            });
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5