Покажите пример многопоточной отправки POST запросов - C#
Формулировка задачи:
Суть проблемы - нужно пролайкать профили пользователей на одном сайте.
Я успешно авторизуюсь и сохраняю куки в
Далее мне нужно открыть одну страницу и спарсить оттуда секретный ключ, а потом отправить POST запрос, в котором этот секретный ключ используется. В многопоточном (асинхронном) режиме.
Т.е. Прошу показать, как сделать POST запросы к странице в многопоточном режиме.
Реализация GET и POST методов:
Листинг программы
- static CookieContainer container = new CookieContainer();
Листинг программы
- 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 "Тест";
- });
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д