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

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

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

Суть проблемы - нужно пролайкать профили пользователей на одном сайте. Я успешно авторизуюсь и сохраняю куки в
Листинг программы
  1. static CookieContainer container = new CookieContainer();
Далее мне нужно открыть одну страницу и спарсить оттуда секретный ключ, а потом отправить POST запрос, в котором этот секретный ключ используется. В многопоточном (асинхронном) режиме. Т.е. Прошу показать, как сделать POST запросы к странице в многопоточном режиме. Реализация GET и POST методов:
Листинг программы
  1. public static string Post(string url, string data, bool clearCookie, ref CookieContainer container, bool allow_redirect = true, WebProxy proxy = null)
  2. {
  3. string output = null;
  4. try
  5. {
  6. HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  7. if (clearCookie) WebReq.CookieContainer = new CookieContainer();
  8. else WebReq.CookieContainer = container;
  9. byte[] buffer = Encoding.UTF8.GetBytes(data);
  10. WebReq.Method = "POST";
  11. WebReq.AllowAutoRedirect = allow_redirect;
  12. WebReq.ContentType = "application/x-www-form-urlencoded";
  13. WebReq.ContentLength = buffer.Length;
  14. Stream PostData = WebReq.GetRequestStream();
  15. PostData.Write(buffer, 0, buffer.Length);
  16. PostData.Close();
  17. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  18. Stream Answer = WebResp.GetResponseStream();
  19. container = WebReq.CookieContainer;
  20. StreamReader _Answer = new StreamReader(Answer, Encoding.UTF8);
  21. output = _Answer.ReadToEnd();
  22. return output.Trim() + "\n";
  23. }
  24. catch (Exception ex)
  25. {
  26. return ex.Message;
  27. }
  28. }
  29. public static string Get(string url, bool clearCookie, ref CookieContainer container, WebProxy proxy = null)
  30. {
  31. string output = null;
  32. try
  33. {
  34. HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  35. if (clearCookie) WebReq.CookieContainer = new CookieContainer();
  36. else WebReq.CookieContainer = container;
  37. WebReq.Method = "GET";
  38. WebReq.AllowAutoRedirect = true;
  39. WebReq.ContentType = "application/x-www-form-urlencoded";
  40. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  41. Stream Answer = WebResp.GetResponseStream();
  42. container = WebReq.CookieContainer;
  43. StreamReader _Answer = new StreamReader(Answer, Encoding.UTF8);
  44. output = _Answer.ReadToEnd();
  45. return output.Trim() + "\n";
  46. }
  47. catch (Exception ex)
  48. {
  49. return ex.Message;
  50. }
  51. }

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

textual
Листинг программы
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             ВызывающийМетод();
  6.             Console.WriteLine("После асинк");
  7.             Console.Read();
  8.         }
  9.  
  10.         static async void ВызывающийМетод()
  11.         {
  12.             //Итак, теперь await запускает метод
  13.             //Приостанавливает все действия после него
  14.             //Возвращает работу вызывающему коду - то есть Main'у
  15.             //Ну и распаковывает Task<string> в string
  16.             string строка = await Метод();
  17.             Console.WriteLine(строка);
  18.         }
  19.  
  20.         /// <summary>
  21.         /// Этот метод реализует действия в новом потоке
  22.         /// с помощью Task.Run
  23.         /// </summary>
  24.         /// <returns>возвращает Task<string></returns>
  25.         static async Task<string> Метод()
  26.         {
  27.             return await Task.Run<string>(() =>
  28.             {
  29.                 Thread.Sleep(3000);
  30.                 return "Тест";
  31.             });
  32.         }
  33.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут