OnePrg
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Мне нужно получить данные с сайта http://spending.gov.ua/ программно, а именно передать код ЕДРПОУ получателя/плательщика, дату начала, дату окончания периода выборки и скачать полученные данные в формате CSV. Формально всё работает, возвращает коды 200, но скачанный файл при этом совершенно не с теми данными, более того данные одни и те же. Программирую на 1С. Чтобы определить параметры запроса пользуюсь консолью в Firefox. Данные консоли при нажатии кнопки "Пошук" Данные консоли при нажатии кнопки "Загрузить" URL запроса при этом: http://spending.gov.ua/web/guest/transaction?p_p_id=transactionportlet_WAR_EdataPortletportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&_transactionportlet_WAR_EdataPortletportlet_mode=downloadCSV Как я это реализовываю в 1С: Сообщить("Начало -------------------"); АдресСайта = "www.spending.gov.ua"; Соединение = Новый HTTPСоединение(АдресСайта); // получаем от свервера куки HTTPЗапрос = Новый HTTPЗапрос; Ответ = Соединение.Получить(HTTPЗапрос); Сообщить(Ответ.КодСостояния); Куки = Ответ.Заголовки.Получить("Set-Cookie"); // запрос на выборку данных HTTPЗапрос = Новый HTTPЗапрос; HTTPЗапрос.АдресРесурса = "/web/guest/transaction"; HTTPЗапрос.Заголовки.Вставить("Host","spending.gov.ua"); HTTPЗапрос.Заголовки.Вставить("User-Agent","Mozilla/5.0 (Windows NT 5.1; rv:44.0) Gecko/20100101 Firefox/44.0"); HTTPЗапрос.Заголовки.Вставить("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); HTTPЗапрос.Заголовки.Вставить("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"); HTTPЗапрос.Заголовки.Вставить("Accept-Encoding","gzip, deflate"); HTTPЗапрос.Заголовки.Вставить("Referer","http://spending.gov.ua/web/guest/transaction"); //HTTPЗапрос.Заголовки.Вставить("Cookie","COOKIE_SUPPORT=true; GUEST_LANGUAGE_ID=en_US; JSESSIONID=7F187E9D4FD77C4AC5FF728B83B44214; LFR_SESSION_STATE_20159=1455349755916; welcome=true"); HTTPЗапрос.Заголовки.Вставить("Cookie",Куки); HTTPЗапрос.Заголовки.Вставить("Connection","keep-alive"); //HTTPЗапрос.Заголовки.Вставить("Content-Length","149"); //HTTPЗапрос.Заголовки.Вставить("Content-Type","application/x-www-form-urlencoded"); HTTPЗапрос.УстановитьТелоИзСтроки("&sender=&recipient=22869069&dateFrom=05.02.2016&dateFrom_submit=2016/02/05&dateTo=05.02.2016&dateTo_submit=2016/02/05&mode=searchTran"); Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос); Сообщить(Ответ.КодСостояния); // скачивание файла с данными HTTPЗапрос = Новый HTTPЗапрос; HTTPЗапрос.АдресРесурса = "/web/guest/transaction?p_p_id=transactionportlet_WAR_EdataPortletportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&_transactionportlet_WAR_EdataPortletportlet_mode=downloadCSV"; HTTPЗапрос.Заголовки.Вставить("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); HTTPЗапрос.Заголовки.Вставить("Accept-Encoding","gzip, deflate"); HTTPЗапрос.Заголовки.Вставить("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"); HTTPЗапрос.Заголовки.Вставить("Connection","keep-alive"); HTTPЗапрос.Заголовки.Вставить("Cookie",Куки); HTTPЗапрос.Заголовки.Вставить("Host","spending.gov.ua"); HTTPЗапрос.Заголовки.Вставить("Referer","http://spending.gov.ua/web/guest/transaction"); HTTPЗапрос.Заголовки.Вставить("User-Agent","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 OPR/27.0.1689.76"); ИмяВременногоФайла = ПолучитьИмяВременногоФайла("csv"); Ответ = Соединение.Получить(HTTPЗапрос,ИмяВременногоФайла); Сообщить(Ответ.КодСостояния); Сообщить(ИмяВременногоФайла); ЗапуститьПриложение(ИмяВременногоФайла); Так вот это всё формально работает: коды возврата 200, но при этом файл грузится с левыми данными. Подскажите пожалуйста что не так? | Всего записей: 452 | Зарегистр. 25-10-2007 | Отправлено: 18:12 13-02-2016 | Исправлено: OnePrg, 18:15 13-02-2016 |
|