Источник данных - REST запрос с авторизацией Bearer
Добавлено: 04 июл 2019, 17:54
Добрый день!
Требуется в 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?
Требуется в 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?