¿Cómo descargar el archivo Excel (.xls) de la API en cartero?

169

Tengo un punto final de API y un token de autorización para esa API.

Dicha API es para .xlsdescargar informes, ¿cómo puedo ver el .xlsarchivo descargado usando (si es posible) Postman ?

Si no es posible usar Postman, ¿cuáles son las otras formas programáticas que debería buscar?

praxnet
fuente
Postman no es una aplicación que pueda usar "programáticamente", es una GUI con todas las funciones. ¿Qué quiere decir con "ver el archivo descargado .xls usando POSTMAN"? ¿Desea realizar una llamada al punto final utilizando Postman?
nbokmans
44
@nbokmans Quiero descargar el archivo .xls proporcionado por backend cuando uso cartero, no puedo ver el archivo .xls correctamente, es todo unicodes y caracteres especiales. Lo que necesito es, si hay alguna otra forma programática aparte del cartero para disparar una API y descargar el archivo .xls en mi PC
praxnet
@nbokmans Gracias por responder, solo comienza la descarga, no da ninguna ubicación.
praxnet

Respuestas:

376

Intente seleccionar en send and downloadlugar de sendcuando realiza la solicitud. (el botón azul)

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

"Para los tipos de respuesta binaria, debe seleccionar Send and downloadcuál le permitirá guardar la respuesta en su disco duro. Luego puede verla usando el visor apropiado".

Jake
fuente
2
esto definitivamente no es intuitivo, ¡gracias por el puntero! Intenté Guardar respuesta, pero solo se guardó en Ejemplos que no fue útil.
SliverNinja - MSFT
6

Si el punto final realmente es un enlace directo al archivo .xls, puede probar el siguiente código para manejar la descarga:

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

Todo lo que debe hacer es establecer el nombre apropiado para el token de autenticación y completarlo.

Ejemplo de uso:

download(new File("C:\\output.xls"), "http://www.website.com/endpoint");
nbokmans
fuente
1
Este código funciona para mí, aunque para mi información si mi punto final no hubiera sido un enlace directo, ¿qué cambio tendría que hacer en el fragmento de código anterior?
praxnet
1

En cartero: ¿ha intentado agregar el elemento de encabezado 'Aceptar' como 'application / vnd.ms-excel'

jikku
fuente