|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Здравствуйте! У меня есть проблема. Мне нужно отправлять порядка 40 запросов с данными на веб ресурс! При этом отправка запроса зависит от предыдущего, т.е. если сервер вернул ошибку, то необходимо остановить выполнение и отобразить текст ответа сервера. При этом хотелось бы чтобы на форме в каком-нить label отображалось число запросов которые прошли и получили ответ. Если делать в лоб, то запросы идут, ответы получаются, но где-то на 5-7 запросе подвисает интерфейс проги. Пытаюсь делать через BackgroungWorker! С ним не видно, сколько выполнилось и выполнилось ли вообще! И в процессе формирования данных для POST запроса часть сведений берётся с формы, например, с TextBox. И BackgroungWorker у меня останавливается когда присваиваю какой-то переменной данные TextBox.Text! Другой вариант - пытаюсь отправить POST запрос асинхронно! Тут возникает проблема, что отправляются сразу 40 запросов. И ответы на них приходят только со временем и это в программе уже не видно! Код выложи вечером, т.к. с собой на руках нету. Может примерчики подскажите какие можно посмотреть?? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 15:45 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERДругой вариант - пытаюсь отправить POST запрос асинхронно! Тут возникает проблема, что отправляются сразу 40 запросов.дык, не отправляй всё сразу. в любом асинхронном запросе можно поймать момент, когда запрос завершится, позырить результат, использовав его для нового запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 15:56 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Яростный МечDomenERДругой вариант - пытаюсь отправить POST запрос асинхронно! Тут возникает проблема, что отправляются сразу 40 запросов.дык, не отправляй всё сразу. в любом асинхронном запросе можно поймать момент, когда запрос завершится, позырить результат, использовав его для нового запроса. Примерчик можно? И всё дело в том, что асинхронную отправку запроса я сделал по одному примеру, а там 2 асинхронных процедуры по отправке и получению ответа с параметрами static void. А при таких параметрах я не могу забрать из процедуры результат ответа. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 16:02 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenER, Вы отправляете из формы или из веб-страницы? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 11:25 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERсделал по одному примеру Пример покажите. Может найдем что переделать. Навскидку - ответ можно писать в какую-то глобальную переменную и читать ее по таймеру ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 11:32 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Cat2DomenER, Вы отправляете из формы или из веб-страницы? Извините, понял сам, что из формы. Бота для онлайн игрушки пишите? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 11:33 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERЯростный Мечпропущено... дык, не отправляй всё сразу. в любом асинхронном запросе можно поймать момент, когда запрос завершится, позырить результат, использовав его для нового запроса. Примерчик можно? Тут . ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 20:35 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Cat2Cat2DomenER, Вы отправляете из формы или из веб-страницы? Извините, понял сам, что из формы. Бота для онлайн игрушки пишите? Догадались! Да бота! )) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 09:24 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Код такой: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 09:40 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
При таком коде отправляются сразу 40 запросов без проверки на получения ответа! что не есть хорошо. Т.к. нам нужно отследить что прислал сервер и только потом отправлять следующий запрос! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 09:49 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Лучше пакет запросов распараллелить, чтобы не ждать ответа. И в каждом параллельном коллбэке снимать ответ с сервера и складывать в общую потокобезопасную коллекцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 09:58 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
codearticles.ruЛучше пакет запросов распараллелить, чтобы не ждать ответа. И в каждом параллельном коллбэке снимать ответ с сервера и складывать в общую потокобезопасную коллекцию. Сервер прослеживает частоту обращений и иногда присылает сообщение, что надо охладить пыл обращений ))) Сколько он может пропускать запросов я пока не вычислил! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 10:05 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenER, какая задача решается? Не совсем понятно, зачем нужно в короткий промежуток времени отправлять столько запросов. DDoS бота пишешь? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 11:21 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
codearticles.ruDomenER, какая задача решается? Не совсем понятно, зачем нужно в короткий промежуток времени отправлять столько запросов. DDoS бота пишешь? :) DDoS бот тут непричём! надо просто отправить последовательно порядка 40 запросов и отслеживать ответы предыдущих чтобы остановить следующий запрос в случае чего. И главное чтобы интерфейс не вис и отображал количество пройденных запросов. И если запрос вывел ошибку - то вывести ответ в какой-нить RichTextBox! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:03 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERнадо просто отправить последовательно порядка 40 запросов и отслеживать ответы предыдущих чтобы остановить следующий запрос в случае чего. Ты не ответил на мой вопрос. Мне его повторить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:10 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERнадо просто отправить Все уже поняли, что надо. А вот зачем надо, не совсем понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:11 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERКод такой:убери цикл. вместо него сделай один запрос. каждый следующий делай в RequestCorrelationResponse. при этом увеличивай i на 1. когда i станет равно 40 - запрос не делай. i можно сделать полем класса, чтобы методы его видели. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:16 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Яростный МечDomenERКод такой:убери цикл. вместо него сделай один запрос. каждый следующий делай в RequestCorrelationResponse. при этом увеличивай i на 1. когда i станет равно 40 - запрос не делай. i можно сделать полем класса, чтобы методы его видели. Отправятся сразу 40 запросов без возможности отследить появление ошибки в ответе на запрос и вывода её на форму! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:39 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
codearticles.ruDomenERнадо просто отправить Все уже поняли, что надо. А вот зачем надо, не совсем понятно. А как отследить порядка 40 последовательных операций? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:40 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERА как отследить порядка 40 последовательных операций? А почему не сделать один запрос, который вернет нужный пакет? Я и спрашиваю, что за задача. Опиши предметную область. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:49 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenER, вот набросок - 5 страниц недавней темы на этом форуме: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
для POST запросов можешь использовать wc.UploadStringAsync. в общем, WebClient рулит. Просто, удобно, функционально. Заголовки запроса, куки всякие тоже можно добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 13:24 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
codearticles.ruDomenERА как отследить порядка 40 последовательных операций? А почему не сделать один запрос, который вернет нужный пакет? Я и спрашиваю, что за задача. Опиши предметную область. В общем в игре надо провести 40 атак! 1 запрос = 1 атака! Если пустить махом несколько штук сразу, то сервер первые 2 примет, потом 3-4 выдаёт ошибку, что слишком часто, потом ещё одну принимает, а дальше снова ошибка! А вообще по разному бывает. Не знаю как там отслеживается частота запросов! Вот я и хочу пустить последовательно атаки. Если получу ошибку о том что слишком часто, то атаку думаю повторить сделав i-- в цикле! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 14:35 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
DomenERЕсли пустить махом несколько штук сразу, то сервер первые 2 примет, потом 3-4 выдаёт ошибку Ну так и разбирайся с сервером. Причем тут клиент? Какой-то эпический бред ты пишешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 14:52 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Яростный Меч Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Зачем так сложно? В одну строчку: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 12:16 |
|
Отправка множества POST запросов
|
|||
---|---|---|---|
#18+
Кстати, вот вот еще одно доказательство того, что не нужно использовать убогий WebClient, который не потокобезопасен. Вот так работать не будет, если вынести WebClient в переменную. Код: c# 1. 2.
Нужно в каждой итерации создавать новый экземпляр клиента, что реально накладно. Как в примере постом выше. А вот HttpClient отлично справляется с задачей. Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 12:57 |
|
|
start [/forum/topic.php?fid=20&fpage=106&tid=1402388]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 378ms |
total: | 518ms |
0 / 0 |