Como baixar o arquivo excel (.xls) da API no carteiro?

169

Estou tendo um ponto de extremidade da API e um token de autorização para essa API.

A referida API é para .xlsdownload de relatórios. Como posso visualizar o .xlsarquivo baixado usando (se possível) o Postman ?

Se não for possível usar o Postman, quais são as outras formas programáticas que eu deveria estar procurando?

praxnet
fonte
O Postman não é um aplicativo que você possa usar "programaticamente" - é uma GUI completa. O que você quer dizer com "visualizando o arquivo .xls baixado usando POSTMAN"? Deseja fazer uma chamada para o terminal usando o Postman?
Nbokmans
4
@nbokmans Eu quero baixar o arquivo .xls fornecido pelo back-end quando uso o carteiro, não consigo visualizar o arquivo .xls corretamente, todos os seus unicodes e caracteres especiais. O que eu preciso é, Se houver qualquer outra forma de programação para além de carteiro para disparar uma API e download de arquivo .xls no meu pc
praxnet
@nbokmans Obrigado pela resposta, ele apenas inicia o download, não fornece nenhum local.
Praxnet

Respostas:

376

Tente selecionar em send and downloadvez desend quando você faz a solicitação. (o botão azul)

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

"Para os tipos de resposta binária, você deve selecionar Send and downloadqual permitirá salvar a resposta no seu disco rígido. Você poderá visualizá-la usando o visualizador apropriado."

Jake
fonte
2
isso definitivamente não é intuitivo - obrigado pelo ponteiro! Tentou salvar a resposta, mas acabou de salvar em exemplos, o que não foi útil.
SliverNinja - MSFT
6

Se o nó de extremidade realmente for um link direto para o arquivo .xls, tente o seguinte código para lidar com o download:

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;
}

Tudo o que você deveria precisa fazer é definir o nome apropriado para o token de autenticação e preenchê-lo.

Exemplo de uso:

download(new File("C:\\output.xls"), "http://www.website.com/endpoint");
nbokmans
fonte
1
Esse código funciona para mim, embora, para minhas informações, se meu terminal não tivesse um link direto, que alteração eu precisaria fazer no snippet de código acima?
Praxnet
1

No postman - Você tentou adicionar o elemento de cabeçalho 'Accept' como 'application / vnd.ms-excel'

jikku
fonte