Источник данных - REST запрос с авторизацией Bearer

Обсуждение Stimulsoft Reports.JAVA
Ответить
belyalex
Сообщения: 16
Зарегистрирован: 04 июл 2019, 16:46

Источник данных - REST запрос с авторизацией Bearer

Сообщение belyalex »

Добрый день!

Требуется в java построить отчёт, источником данных которому служит REST-запрос с авторизацией Bearer, возвращающий JSON.
Для кода построения отчёта использовал пример кода отсюда:
https://www.stimulsoft.com/ru/samples/j ... -from-code

У меня получился вот такой код:
public void BuildReportZones(Request request, Response response) throws StiDeserializationException, SAXException, IOException, StiException {
StiReport renderReport = StiSerializeManager.deserializeReport(new File("Reports/Report_TEST_REST.mrt"));

StiReport report = renderReport.render();

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

StiExportManager.exportHtml(report,outputStream);

response.setContentType("text/html");

response.setBody(Unpooled.wrappedBuffer(outputStream.toByteArray()));

response.noSerialization();
response.setResponseStatus(HttpResponseStatus.OK);
}

В дизайнере отчётов использую JSON-источник данных с такой строкой:
http://<сервер>:<порт>/<endpoint>?<параметры отчёта>;Authorization=Bearer <токен>

Отчёт в дизайнере строится в режиме просмотра правильно.

В java-коде при вызове "StiReport report = renderReport.render();" возникает вот такая ошибка:
ERROR: Exception in path /buildReport/zones: java.io.FileNotFoundException: http://<сервер>:<порт>/<endpoint>?<параметры отчёта>;Authorization=Bearer <токен>
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1890)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.URL.openStream(URL.java:1045)
at com.stimulsoft.base.data.StiDataLoaderHelper.loadSingle(StiDataLoaderHelper.java:61)
at com.stimulsoft.report.helpers.StiUniversalDataLoader.loadSingle(StiUniversalDataLoader.java:34)
at com.stimulsoft.report.dictionary.databases.StiJsonDatabase.getJSONObject(StiJsonDatabase.java:188)
at com.stimulsoft.report.dictionary.databases.StiJsonDatabase.connect(StiJsonDatabase.java:121)
at com.stimulsoft.report.dictionary.dataSources.StiDataStoreSource.connect(StiDataStoreSource.java:103)
at com.stimulsoft.report.dictionary.dataSources.StiDataSourcesCollection.connect(StiDataSourcesCollection.java:143)
at com.stimulsoft.report.dictionary.StiDictionary.connect(StiDictionary.java:1257)
at com.stimulsoft.report.dictionary.StiDictionary.connect(StiDictionary.java:1233)
at com.stimulsoft.report.engine.engineV2.StiRenderProviderV2.ConnectToData(StiRenderProviderV2.java:442)
at com.stimulsoft.report.engine.engineV2.StiRenderProviderV2.Render(StiRenderProviderV2.java:129)
at com.stimulsoft.report.engine.engineV2.builders.StiReportV2Builder.RenderSingleReport(StiReportV2Builder.java:64)
at com.stimulsoft.report.StiReport.RenderReport(StiReport.java:2046)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1961)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1896)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1886)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1871)
at com.stimulsoft.report.StiReport.render(StiReport.java:1854)

Судя по всему, в функции com.stimulsoft.base.data.StiDataLoaderHelper.loadSingle
делается попытка открыть URL "как есть", в виде: http://<сервер>:<порт>/<endpoint>?<параметры отчёта>;Authorization=Bearer <токен>

Как мне всё-таки добиться построения такого отчёта в java?
Vadim
Сообщения: 107
Зарегистрирован: 04 апр 2013, 12:26

Re: Источник данных - REST запрос с авторизацией Bearer

Сообщение Vadim »

Здравствуйте.
Пришлите пожалуйста Report_TEST_REST.mrt для анализа
belyalex
Сообщения: 16
Зарегистрирован: 04 июл 2019, 16:46

Re: Источник данных - REST запрос с авторизацией Bearer

Сообщение belyalex »

Добрый день!

Шаблон отчёта Report_TEST_REST.mrt во вложении.
Вложения
Report_TEST_REST.mrt
(12.03 КБ) 348 скачиваний
Vadim
Сообщения: 107
Зарегистрирован: 04 апр 2013, 12:26

Re: Источник данных - REST запрос с авторизацией Bearer

Сообщение Vadim »

Здравствуйте.
Разделитель параметров в URL используйте знак & (перед Authorization)
Вместо http://indoor-sreda.st-hld.ru:8082/repo ... vKRIsKFed4
Следует использовать http://indoor-sreda.st-hld.ru:8082/repo ... vKRIsKFed4
belyalex
Сообщения: 16
Зарегистрирован: 04 июл 2019, 16:46

Re: Источник данных - REST запрос с авторизацией Bearer

Сообщение belyalex »

Спасибо, всё получилось.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Источник данных - REST запрос с авторизацией Bearer

Сообщение Aleksey »

Здравствуйте,

Отлично! Дайте знать, если будут еще вопросы.

Спасибо.
Ответить