скачать отчет в формате csv из msgraph api - PullRequest
0 голосов
/ 22 марта 2019

Использование Java 8 в Websphere 8.x.Попытка получить отчет об аудите из API MS Graph (/v1.0/reports/getEmailActivityUserDetail(period='D7') конечная точка) для выполнения таких действий, как отчет о входе в систему при последнем входе пользователя и т. Д.

Создание токена OAuth и т. Д., Все работает нормально, и я могузахватить URL-адрес 302 redirect успешно, и это позволяет мне загружать файл отчета CSV из браузера, используя postman или wget, PHP file_get_contents и т. д.

Работая из дома, просто используя команду Java 8line app, следующий код прекрасно захватывает файл.Если я скопирую и вставлю код на свою рабочую машину и вызову его через веб-приложение Websphere, я получу IOException с сообщением «сброс соединения» (примечание - НЕ сбрасывается по одноранговой сети!).Я добавил сертификат SSL для reports.office.com и добавил библиотеку Apache Commons CSV lib / jar в пути к сборке и классам.

Предложения по дальнейшей отладке для исправления приветствуются.

    String targetUrl = "https://reportsncu.office.com/data/v1.0/download?token=eyJ...*snip*...gFCg";
    try {
        InputStream input = new URL(targetUrl).openStream();
        Reader r = new InputStreamReader(input);
        Iterable<CSVRecord> records = CSVFormat.DEFAULT.parse(r);
        for (CSVRecord record : records) {
            String user = record.get(1);
            String lastActive = record.get(5);
            if (user.equals("user@example.com")) {
                System.out.println(user + " last active " + lastActive);
            }
        }
        r.close();
        input.close();

    } catch (MalformedURLException ex) {
        System.out.println("MalformedURLException: "+ex.getMessage());
    } catch (IOException ex) {
        System.out.println("IOException: "+ex.getMessage());
    }

«Интересная» часть StackTrace () указывает, что, возможно, что-то происходит с SSL, но это не обычная ошибка «забыл импортировать сертификат веб-сервера в конфигурацию websphere», которую я обычно вижу при первом подключении к APIсервис и т. д.

SystemErr R java.net.SocketException: Connection reset
SystemErr R at java.net.SocketInputStream.read(SocketInputStream.java:220)
SystemErr R at java.net.SocketInputStream.read(SocketInputStream.java:152)
SystemErr R at com.ibm.jsse2.a.a(a.java:79)
SystemErr R at com.ibm.jsse2.a.a(a.java:182)
SystemErr R at com.ibm.jsse2.as.a(as.java:883)
SystemErr R at com.ibm.jsse2.as.i(as.java:969)
SystemErr R at com.ibm.jsse2.as.a(as.java:680)
SystemErr R at com.ibm.jsse2.as.startHandshake(as.java:859)
SystemErr R at com.ibm.ws.ssl.config.WSSocket.startHandshake(WSSocket.java:414)
SystemErr R at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:16)
SystemErr R at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:44)
SystemErr R at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1561)
SystemErr R at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1489)
SystemErr R at com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:93)
SystemErr R at java.net.URL.openStream(URL.java:1057)

1 Ответ

1 голос
/ 23 марта 2019

Сообщите, если это не поможет, @ivanivan!

Трассировка стека, которую вы опубликовали, привела к ужасным воспоминаниям о IBM JDK :) У меня нет ничего публичного, но это поможет некоторым! https://www.ibm.com/developerworks/community/forums/html/topic?id=ec367703-7957-4249-9f0b-559c717c0c87

...