Jak pobrać plik excel (.xls) z API w programie Postman?

169

Mam punkt końcowy interfejsu API i token autoryzacji dla tego interfejsu API.

Wspomniane API służy do .xlspobierania raportów, w jaki sposób mogę wyświetlić pobrany .xlsplik za pomocą (jeśli to możliwe) programu Postman ?

Jeśli korzystanie z programu Postman nie jest możliwe, jakich innych metod programistycznych powinienem szukać?

praxnet
źródło
Postman nie jest aplikacją, której można używać „programowo” - jest to w pełni funkcjonalny graficzny interfejs użytkownika. Co rozumiesz przez „przeglądanie pobranego pliku .xls za pomocą programu POSTMAN”? Czy chcesz nawiązać połączenie z punktem końcowym przy użyciu programu Postman?
nbokmans
4
@nbokmans Chcę pobrać plik .xls dostarczony przez backend, kiedy używam Postman, nie jestem w stanie poprawnie wyświetlić pliku .xls, wszystkich jego unikodów i znaków specjalnych. Potrzebuję tego, czy istnieje inny programowy sposób oprócz listonosza na uruchomienie api i pobranie pliku .xls na mój komputer
praxnet
@nbokmans Dzięki za odpowiedź, dopiero zaczyna się pobieranie, nie podaje żadnej lokalizacji.
praxnet

Odpowiedzi:

375

Spróbuj wybrać send and downloadzamiast, sendkiedy składasz żądanie. (niebieski przycisk)

https://www.getpostman.com/docs/responses

„W przypadku typów odpowiedzi binarnych należy wybrać opcję, Send and downloadktóra umożliwi zapisanie odpowiedzi na dysku twardym. Następnie można ją wyświetlić za pomocą odpowiedniej przeglądarki”.

Jake
źródło
2
to zdecydowanie nie jest intuicyjne - dzięki za wskaźnik! Próbowano zapisać odpowiedź, ale zapisano ją tylko w przykładach, co nie było pomocne.
SliverNinja - MSFT
6

Jeśli punkt końcowy naprawdę jest bezpośrednim łączem do pliku .xls, możesz wypróbować następujący kod, aby obsłużyć pobieranie:

public static boolean download(final File output, final String source) {
    try {
        if (!output.createNewFile()) {
            throw new RuntimeException("Could not create new file!");
        }
        URL url = new URL(source);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        // Comment in the code in the following line in case the endpoint redirects instead of it being a direct link
        // connection.setInstanceFollowRedirects(true);
        connection.setRequestProperty("AUTH-KEY-PROPERTY-NAME", "yourAuthKey");
        final ReadableByteChannel rbc = Channels.newChannel(connection.getInputStream());
        final FileOutputStream fos = new FileOutputStream(output);
        fos.getChannel().transferFrom(rbc, 0, 1 << 24);
        fos.close();
        return true;
    } catch (final Exception e) {
        e.printStackTrace();
    }
    return false;
}

Wszystko, co powinno musisz zrobić, to ustawić odpowiednią nazwę dla tokenu auth i wypełnić go.

Przykładowe użycie:

download(new File("C:\\output.xls"), "http://www.website.com/endpoint");
nbokmans
źródło
1
Ten kod działa dla mnie, chociaż dla moich informacji, jeśli mój punkt końcowy nie byłby bezpośrednim linkiem, jaką zmianę musiałbym wprowadzić w powyższym fragmencie kodu?
praxnet
1

W listonoszu - czy próbowałeś dodać element nagłówka „Accept” jako „application / vnd.ms-excel”

jikku
źródło