Страница 1 из 1

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

Добавлено: 04 июл 2019, 17:54
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?

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

Добавлено: 05 июл 2019, 12:42
Vadim
Здравствуйте.
Пришлите пожалуйста Report_TEST_REST.mrt для анализа

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

Добавлено: 05 июл 2019, 13:51
belyalex
Добрый день!

Шаблон отчёта Report_TEST_REST.mrt во вложении.

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

Добавлено: 10 июл 2019, 15:34
Vadim
Здравствуйте.
Разделитель параметров в URL используйте знак & (перед Authorization)
Вместо http://indoor-sreda.st-hld.ru:8082/repo ... vKRIsKFed4
Следует использовать http://indoor-sreda.st-hld.ru:8082/repo ... vKRIsKFed4

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

Добавлено: 11 июл 2019, 14:05
belyalex
Спасибо, всё получилось.

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

Добавлено: 12 июл 2019, 00:16
Aleksey
Здравствуйте,

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

Спасибо.