Есть задача выгружать данные в виде файлов с сайта, сайт геренит уникальный ID сессии для выгрузки данных файлов. Есть очень похожая тема и по сути она дает все ответы (http://www.excelworld.ru/forum/10-19904-1), но до ума довести не могу данный вопрос.
благодаря Средствам разработчика IE получил строку ПОСТ запроса, формата:
на который приходит ответ с необходимым ID Как ее корректно отправить, я не могу разобраться (
Все параметры .SetRequestHeader передаются (тоже взял из средств разработчика) загвоздка на позиции .send (?) ошибка:Runtime Error -2147012890 (80072 ee6); Automation error, при отработке данной строки
Подскажите пожалуйста где есть внятное описание как преобразовать полученный запрос и отправить его, что бы получить ответ )
Игорь, Завтра попробую на работе, как я понял смыл сводится к тому что бы преобразовать запрос в Юникод:
' здесь перечисляем параметры авторизации в формате name1=value1&name2=value2&name3=value3 PostData = "mtklogin=MyLogin&mtkpass=MyPassword" POST = StrConv(PostData, vbFromUnicode)
Такого я не пробовал, но подумывал, что скорее всего кодировка запроса не устраивает "ту сторону" ) что касается формата передачи данных то такой вариант пробовался, результат - отрицательный(
мои мысли: с другой стороны Средства разработчика IE тупо показывают уже готовый текст запроса который был отправлен и он там читается, понятен и не кодирован, в чем подвох )
Doober, поподробнее можно? да, формат именно json как корректно отправит запрос в этом формате для меня пока неведомая загадка. Буду признателен если подскажите или направите.
Не знаю как вы смотрели, но сделать все можно вполне обычным способом. В хроме (как и в других браузерах, только в других браузерах в других местах может быть) в самом низу есть пункт Form Data. Вот там выбираете View Source и этот самый source копируете в текст payload'а. Вот например текст для запоминания введенного текста на планете (view parsed в хроме): autosave_id:21f6e6465711e8078a47bd3c1857d1550 form_data[PAGE_NAME]:read form_data[FID]:1 form_data[TID]:96058 form_data[MID]:0 form_data[MESSAGE_TYPE]:REPLY form_data[AUTHOR_ID]: form_data[forum_post_action]:save form_data[MESSAGE_MODE]:NORMAL form_data[POST_MESSAGE]: form_data[hidden_focus]: form_data[USE_SMILES]:Y form_data[TOPIC_SUBSCRIBE]: form_data[send_button]: form_data[view_button]:
А вот то же, только кодированное (без кавычек) - view source в хроме:
Здравствуйте, отправляю запрос post, копирую заголовки и тело запроса из firefox, в ответе получаю ошибка 511 отказано в доступе. "{"error":{"err_code":511,"err_desc":"Sign access denied"},"data":null}", а лиса получает все данные
zanoza1989 иFarafonov, - это один и тот же человек? Быть может, лучше сделать запрос в C#? Там есть замечательная библиотека JSON.NET для работы с JSON.
Нет это разные люди, спасибо сейчас погуглю, но всеже почему лиса получает ответ со всеми данными, а мне отказано, понятно что что-то не так, но в какую сторону искать.
Доброго времени суток, Мы разные, точно ) Свою проблему я решил простым методом научного тыка, помощью средств разработчика посмотрел какие параметры передаются в заголовке пост запроса и в самом запросе, скопировал всё это добро и начал исключать по очереди часть данных, и через н-ое количество раз - о чудо получил ответ. Кстати нужно обязательно в сам запрос перекодировать в нужный язык который вы передаете в заголовке.
Я сравнил запросы Fiddler Web Debugger, оказалось, что мои запросы отличаются от запросов Firefox наличием Cookies, их просто нет, сейчас бьюсь над тем как их добавить, отправляю запрос вручную и все получается.
Вообщем если кому интересно или возможно пригодится исследователям в будущем. Сам запрос POST я брал из отладчика Firefox F12, там в закладке сеть можно посмотрть все запросы и ответы сервера. Есть еще возможность "измнить и отправить", отуда я взял все заголовки и тело запроса. Далее ничего не получалось и я использовал Fiddler Web Debugger для сравнения моего и лисиного запроса, оказалось что мое приложение не отправляет часть заголовков, добавилась еще ночь гугленияи перебора вариантов, в итоге, что со мной уже не в первый раз, нужно было удалить лишние побелы и двоеточие. Добавляю код для ознакомления URL обновляется раз в сутки поэтому данный конкретный приме работать не будет нужно буде подставить свои параметры запроса.