0
nikolas260579
22.06.17
✎
10:33
|
Всем добрый день. Пытаюсь получить отчёт с сайта. На сайте на кнопочке "Сформировать отчёт" висит пост-запрос, у которого в ответе есть такой параметр: ReportId. Дальше этот параметр передается в URL GET - запроса, и гет - запрос выполняется несколько раз до тех пор, пока параметр "status" в его ответе не сменится с 0 на 2. При этом в ответе формируется ещё один параметр ReportDataId, я так понимаю, по нему и нужно будет загружать отчёт.Становится доступна ссылка "Загрузить", при этом никаких запросов нет, просто открывается окно с выбором открыть или сохранить файл.
Вопросы у меня такие: ReportId из пост запроса я получил, но как правильно сделать гет? В отдельной процедуре и повторять её же до тех пор пока статус в ответе гет-запроса не будет равен 2? И как правильно получить файл с отчётом - через ФайлРезультата = ПолучитьИмяВременногоФайла(xls) и далее читать его оттуда? Или как-то иначе?
Буду благодарен за любые советы. Формы обычные, платформа 8.3
|
|
6
nikolas260579
22.06.17
✎
11:06
|
(5)пока не знаю, как поможет, просто читаю информацию. Делаю же так: из пост-запроса получил параметр ReportID, пишу гет-запрос
URLЗапроса = Строка("/api/report/"+ReportID+"/status");
ЗаголовкиGET = Новый Соответствие;
ЗаголовкиGET.Вставить("Cookie", Кук);
//URLЗапроса = Строка("/api/report/fiscaldocument/generate?outletId=&kktId=&beginDate="+ДатаНачала+"&endDate="+ДатаКонца+"&documentType=&accountingType=&paymentType=");
GET_Запрос = Новый HTTPЗапрос(URLЗапроса,ЗаголовкиGET);
Соединение.ВызватьHTTPМетод("GET",GET_Запрос);
HTTPОтвет = Соединение.Получить(GET_Запрос,Файл1);
Если HTTPОтвет.КодСостояния = 200 ТОгда
ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
ТекстовыйФайлОтвета.Прочитать(Файл1, КодировкаТекста.UTF8);
СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
//ищем статус или сверяем репортдатаид
Поз = Найти(СтрокаОтветаСервера,"""status""");
Если Поз>0 Тогда
Строка1 = Сред(СтрокаОтветаСервера,Поз);
Поз1 = Найти(Строка1,":");
Если Поз1>0 Тогда
Строка2 = Сред(Строка1,Поз1+1,1);//по идее бы на цифры проверить
Если Строка2 = "0" Тогда
//повторяем гет-запрос?
ИначеЕсли Строка2 = "2" Тогда
Сообщить("отчет где-то есть");
КонецЕсли;
КонецЕсли;
Иначе
КонецЕсли;
Иначе
КонецЕсли;
В результате получаю статус 0. Повторять его до тех пор, пока не получу статус 2?
|
|