|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Здравствуйте форумчане. как организовать гет,пост? попробовал сделать get запрос через MSXML2.XMLHTTP Код: vbnet 1. 2. 3. 4. 5. 6. 7.
в итоге ругается рантайм ошибкой 'отказано в доступе' на xmlHttp.Send помогите разобраться с этим. может есть ошибки, либо может есть другие способы реализации запросов? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2014, 23:19 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
а погуглить слабо? http://support.microsoft.com/kb/304420 http://bbs.vbstreets.ru/viewtopic.php?f=7&t=42537 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2014, 23:53 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Shocker.Pro, ну и как эту проблему можно обойти? кстати а если сделать через api будет такой же результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 00:35 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
дык блин - запрашивать www.yandex.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 01:41 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Shocker.Pro, ну так то да. только вот как именно определить почему сервер откинул соединение и как определить что ему нужно? допустим мы конектимся к yandex.ru при ошибке программно перевести загрузку туда кудда нужно т.е. на www.yandex.ru или допустим так - http://mail.yandex.ru вылетит ошибка доступа и программно определить от сервера что нужно сделать перевод на https://mail.yandex.ru/ в общем не особо наверное понятно обьяснил...( по проще - как определить при ошибке доступа куда перенаправляет сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 02:32 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
нашел способ решения данного запора. - использовать вместо msxml - WinHttpRequest только еще вопрос есть. WinHttpRequest входит в состав windows? или это пришло с vb? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 03:41 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
вот что у меня получилось. загрузка в асинхронном режиме с ожиданием загрузки данных с сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 03:53 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
написал на пост запрос, однако не работает. параметры не передаются. параметры должны кодироваться? помогите исправить ошибку с постом? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 06:48 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
сори опечатался XMLHTTP.send pstData ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 06:49 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Shocker.Pro, все сам разобрался . пост дата должна быть с vbcrlf на конце. Спасибо большое за помощь. тема может считаться закрытой ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2014, 07:10 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Всем привет! Позвольте продолжить спрашивать, дабы не захламлять форум новыми топиками... Есть информационно-справочная система в нашей организации. Доступ через веб-интерфейс. Все как обычно: открыли url, появилась форма авторизации (https), ввели логин/пароль. Появилась форма, позволяющая ввести условия для вывода статистических данных: временной период, различные текстовые и числовые фильтры и т.п. В итоге имеем страничку с табличными данными, как в базе данных. Система проектировалась только для IE версии не выше 8, для работы требует установленных библиотек MSXML4.0. Может это важно. Задача такова: создать клиентскую часть на базе формы access, чтобы из нее делать запросы и получать данные в заранее созданную таблицу. Перерыл форум, но вот как обычно бывает - нет четкого ответа. Не получается построить целостную картину вопроса, прочитав кучу статей и примеров. Начал с того, что установил HHTPAnalyzer, дабы понять, что браузер делает с ресурсом. Картина такова, что на сервере действует механизм PRG (POST-REDIRECT-GET): 1. происходит авторизация методом POST. 2. сервер выдает referer и куки на новый ресурс и переводит туда пользователя. 3. пользователь формирует условия отбора в появившейся веб форме и нажимает "сформировать отчет". Появляется табличка со статистическими данными. 4. я не знаток веб-серверных технологий, там информация выдается с исходным кодом такого вида (это фрагмент): Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Т.е. явно это поддается парсингу. Возможно, тут даже голову ломать не придется и это сформировано по стандарту XML (не придется делать текстовый парсинг "в лоб"). Собственно, вопросы по существу: 1. Как реализовать PRG в vba? Т.е. есть конструкция: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Как ее "допилить", чтобы после нее на основе полученных куков (или кук, тут по ходу все непросто) и рефера сделать редирект? 2. Как формируется переменная "str" в вышеприведенном коде? Она вообще там нужна? На этом шаге мы сообщаем серверу только url/логин/пароль. 3. Как в коде vba передать серверу условия отбора после редиректа? Я так понял, нужно применять метод Код: vbnet 1.
Как узнать, какие вообще там условия можно передать и как они называются? Смотреть лог сниффера? 4. Как результат запихнуть в таблицу access? Ну т.е. что сформировать recordset - это понятно. Но как выдернуть именно тело с данными из полученного массива? 5. И последнее. Понятно, что есть GET и POST директивы... Понятно, что POST - эти типа ГЕТ, но "ширше" по возможностям. Правильно ли я понимаю, что без GET можно вообще обойтись? Вопрос не в общем, а только применительно к моей задачке. Просьба не ругаться, прочитал уже немало материалов, но везде обрывки. Про реализацию на vba PRG не нашел понятной информации. Спасибо откликнувшимся! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 20:14 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
1. Вы пробовали подключатся этим кодом? Какой результат в ResponseText? 2. При авторизации, таким способом (через MSXML2.XMLHTTP) - не нужна. При использовании других объектов - может быть нужна 17068356 3. Если передача условий идёт по GET (а вы говорите, что так) то просто. Покажите какой URL после этих действий DarkSlavyaninпользователь формирует условия отбора в появившейся веб форме и нажимает "сформировать отчет". Появляется табличка со статистическими данными. 4. Самое простое, - Split-ом поразбивать и сохранить через рекордсет. Но можно и "красивее" сделать - сохранить в лок.файл и запросом к таблице на HTTP-странице вытянуть всё за раз. ... или, если повезёт - вгрузить ResponseText в XMLDocument и из него перегнать в рекордсет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 20:46 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
ResponseText, у меня это чудо на работе, завтра смогу дать дополнительную информацию по Вашим вопросам. Одно помню, пробовал для контроля: Код: vbnet 1.
Но вменяемых данных там не было (ну т.е. типа XML-узлов таблицы тех самых статистических данных). Был какой-то фрагмент, начинался с узла/тега типа Код: xml 1.
Сдается мне, высылаются данные первой формы авторизации (которая предваряет основную форму). Дальше убейте - не помню. Завтра скриншоты по всем вопросам запостю.ее А что с PRG? Можно как-то "схватить" куки/реферы, чтобы использовать их как ключик ко второй (основной) веб форме (в которой все фильтры и настраиваются)? Насчет DomDocument - на это у меня большие надежды Очень похоже (я практически уверен), что структура XML там задействована. Это, ведь и есть DomDocument, когда в коде HTML идет врезка XML - структуры? Вручную писать механизм импорта из исходного кода HTTP-страницы не очень охота. Спасибо за то, что откликнулись. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 22:06 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
DarkSlavyanin Можно как-то "схватить" куки/реферы, чтобы использовать их как ключик ко второй (основной) веб форме (в которой все фильтры и настраиваются)? Можно. Вроде так Код: vbnet 1.
Только я не понимаю зачем? Этот Xmlhtp, после Код: vbnet 1.
уже, так сказать, "авторизирован" и, дальше, просто нужно "заслать" нужный GET (если формирование страницы с результатам действительно по GET) с правильными параметрами. Что-то в духе такого должно быть Код: vbnet 1.
DarkSlavyanin Насчет DomDocument - на это у меня большие надежды Очень похоже (я практически уверен), что структура XML там задействована. Это, ведь и есть DomDocument, когда в коде HTML идет врезка XML - структуры?Да, вообщем и HTML-страница, тоже DomDocument, только она редко "валидна" для MSXML2.DomDocument. Но если Response на GET действительно XML-документ, тогда "шансов" для MSXML2.DomDocument поболе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 23:00 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Так, вот результат выполнения команды: Код: vbnet 1. 2. 3.
Еще раз прошелся HTTPAnalyzer'ом, понял, что веб-база работает таким образом: 1. Щелкаем url и попадаем на форму, которая предлагает ввести логин/пароль и нажать "Ок". 2. После авторизации попадаем на форму с тремя вкладками. На первой задаем условия-фильтры, нажимаем "Сохранить". Переходим (вручную) на вторую вкладку, там устанавливаем дополнительные фильтры. Нажимаем "Сохранить", а потом "Сформировать отчет". 3. Переходим на третью вкладку и периодически нажимаем кнопку "Обновить" (не в браузере, а именно в форме). В зависимости от числа записей в результирующей таблице, время проходит от десятка секунд до пары-тройки минут. В результате появляется сама табличка. Исходный код сохраненной странички с этой таблице и содержит требуемые данные, которые предположительно буду парсить. Учитывая, такой длинный путь задания условий, HTTPAnalyzer показывает целую серию транзакций из POST и GET. Вопрос: это я так понял, нужно "сэмулировать" кодом VBA все эти телодвижения по вкладкам веб-формы с сохранением и нажатием "Сформировать отчет"? Или есть вариант забабахать все условия одним махом в директиве POST? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 20:59 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
DarkSlavyaninВопрос: это я так понял, нужно "сэмулировать" кодом VBA все эти телодвижения по вкладкам веб-формы с сохранением и нажатием "Сформировать отчет"?достаточно, думаю, сэмулировать последний запрос, на который приходит ответ с нужными данными. Вряд ли все необходимые данные для формирования отчета хранятся в куках или сессии, скорее всего все они передаются с последним запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 21:16 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Попробую... А если там все "последним действием" все получается (а там он через GET идет), его теоретически можно подменить на POST? Или там сервер задает игру, и такой запрос будет отвергнут? Илил серверу пофигу - он съест и POST, и GET (при условии верного синтаксиса)? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2015, 07:17 |
|
Реализация http Get, Post запроса
|
|||
---|---|---|---|
#18+
Может съест, а может и нет, все зависит от внутренней реализации. Раз последний запрос идет GET-ом, стало быть, в строке запроса должны оказаться все нужные параметры для фильтра и т.п. На взгляд - это так? Попробуйте просто вбить в браузер эту строку и посмотреть на результат (после логина, естественно) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2015, 08:56 |
|
|
start [/forum/topic.php?fid=60&msg=38530860&tid=2155960]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 142ms |
0 / 0 |