Скачать MetaTrader 5

Технический вопрос по ajax...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Написал программу? Опубликуй ее в Code Base!
Sergey Sartakov
1287
Sergey Sartakov 2014.02.18 18:07 

Браузер вывел XTML страницу.

На странице есть кнопочка, нашел эту кнопочку в XTML странице - там по нажатию этой кнопочки яваскрипрт посылает

AJAX запрос на сервер. Все данные этого AJAX GET запроса мне доступны(перехватил с помощью Charly)

Хочу из программы на с++ нажать на эту кнопочку и получить себе в программу данные, которые посылает сервер в ответ на этот запрос.

Вопрос: достаточно ли такой вот обычной последовательности для получения данных, которые сервер

прислал в ответ на AJAX GET запрос:

InternetConnect

HttpOpenRequest

HttpSendRequest(GET....) - тут посылаются те же данные, что и яваскрипт

InternetReadFile

InternetCloseHandle

InternetCloseHandle

InternetCloseHandle

И еще смущают один момент после- завершения HttpSendRequest(GET....), данные уже готовы для чтения ?

или надо организовывать асинхронный режим и ждать готовности данных ?

o_o
Модератор
23692
o_o 2014.02.19 17:48  

что такое аякс в вашем понимании?

это независимое и постоянно поддерживаемое незакрываемое сокетное соединение?


при чем здесь тогда HttpSendRequest и InternetReadFile ?

Alexey Subbotin
4998
Alexey Subbotin 2014.02.19 18:04  
more:

аякс-запрос сам по себе исключительно асинхронен, вы заранее никогда не можете сказать, в какой момент придут (и придут ли вообще) данные. Поэтому данные появляются только в процессе работы InternetReadFile, если не превышен соответствующий таймаут. Другое дело, что после HttpSendRequest вам доступен дескриптор запроса, а следовательно, и все его текущие и будущие данные, значит, отслеживать можно начинать уже сразу после этого.
Gulnaz Akhtyamova
10620
Gulnaz Akhtyamova 2014.02.20 07:34  

Си шарп не подойдёт?

Анализируем запросы-ответы браузером - гугл-хромом. Там и смотрим как браузер "просит". Появляется логика в применении и последовательности команд. Затем применяем язык.... - привязываем к кнопке код...

Как то так...

Sergey Sartakov
1287
Sergey Sartakov 2014.02.20 13:14  
alsu:
аякс-запрос сам по себе исключительно асинхронен, вы заранее никогда не можете сказать, в какой момент придут (и придут ли вообще) данные. Поэтому данные появляются только в процессе работы InternetReadFile, если не превышен соответствующий таймаут. Другое дело, что после HttpSendRequest вам доступен дескриптор запроса, а следовательно, и все его текущие и будущие данные, значит, отслеживать можно начинать уже сразу после этого.


Алексей, можете дать какую-нибудь ссылку с более-менее адекватным кодом на с++,

который читаем данные по технологии AJAX ?

Sergey Sartakov
1287
Sergey Sartakov 2014.02.20 13:17  
sergeev:

что такое аякс в вашем понимании?

это независимое и постоянно поддерживаемое незакрываемое сокетное соединение?


при чем здесь тогда HttpSendRequest и InternetReadFile ?


Смотрю с помощью чарли - для AJAX запроса браузер не устанавливает соединения, а просто посылает GET запрос...

т.е. на уровне сокетов - это обмен данными дэйтаграммами..

Alexey Subbotin
4998
Alexey Subbotin 2014.02.20 15:08  
more:


Алексей, можете дать какую-нибудь ссылку с более-менее адекватным кодом на с++,

который читаем данные по технологии AJAX ?


В чем конкретно задача, перехватить программно данные запроса?
Alexey Subbotin
4998
Alexey Subbotin 2014.02.20 15:16  
more:


Смотрю с помощью чарли - для AJAX запроса браузер не устанавливает соединения, а просто посылает GET запрос...

т.е. на уровне сокетов - это обмен данными дэйтаграммами..

если соединение с нужным сервером уже установлено, то да. Но может быть, что соединение уже закрыто, либо запрос идет в третьему серверу. Тогда по идее должно устанавливаться новое соединение...
Sergey Sartakov
1287
Sergey Sartakov 2014.02.20 15:20  
alsu:

В чем конкретно задача, перехватить программно данные запроса?

Задача такова. Читаю в с++ программу XTML страницу.

Все хорошо, но на этой странице есть многостраничная таблица, и мне надо иметь все эти страницы.

Каждая следующая страница таблицы считывается яваскриптом с помощью

AJAX запроса, т.е. адрес HTML страницы не меняется, а меняется только страница таблицы...

т.е. мне надо

1. послать на сервер AJAX запрос, его структуру я знаю.

2. получить данные, который сервер посылает в ответ...

Похоже, что решение возможно только на уровне программирования сокетов без установления соединения - USER DATAGRAM PROTOCOL

Dmitry Fedoseev
42903
Dmitry Fedoseev 2014.02.20 19:05  

Ажакс делает обычные http запросы. Так-что известные здесь всем методы загрузки вебстраницы должны подойти.

После HttpSendRequest надо делать InternetReadFile() (ну или типа того).

Gulnaz Akhtyamova
10620
Gulnaz Akhtyamova 2014.02.21 06:38  
Integer:

Аджкас делает обычные http запросы. Так-что известные здесь всем методы загрузки вебстраницы должны подойти.

После HttpSendRequest надо делать InternetReadFile() (ну или типа того).

Чтобы воспользоваться "Аджкас" нужно писать страничку html. А смысл?

Я же уже сказал выше - как нужно.

Абсолютно по барабану - что там. Много страниц или одна.

Просто нужно найти в запросе именно то, что нужно.

Анализ струкутуры запросов как сделать (их может быть не один десяток) тоже написал выше.

Просто нужно найти в запросе именно тот, который нужен. Тупо забрать его с браузера и воткнуть в HttpRequest со всеми потрохами и настройками по шрифту, браузеру, кодировке и т.п.. Заятнуть ответ странички в строку и вырезать с неё интересующие данные.

12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий