Покажите пример многопоточной отправки 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 "Тест"; }); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д