Respuesta API codificada como GzipTodas,
Estoy tocando una API interna y la respuesta esperada del extremo de la API es un archivo de Excel. Sin embargo, cuando trato de usar una solicitud HTTP, recibo una respuesta. Supongo que la respuesta está codificada, pero me pregunto cuál es una buena manera de extraer los datos y usarlos.
La solicitud que hago al punto final es la siguiente:
HeaderStr = "Authorization: Bearer " || AccessToken;
Request = New HTTP Request(
URL( URLDes ),
Method( "Get" ),
Headers( {HeaderStr} )
) << Send;La respuesta que recibo es:
"PK"
Re: Respuesta API codificada como GzipPor supuesto @bryan_boone . Me encanta contribuir a que JMP sea mejor y más fácil, para que nos haga la vida más fácil 

Re: Respuesta API codificada como Gzip@uday_guntupalli
Ese es un gran uso para tener
Solicitud HTTP << Envíe argumentos de aceptación, digamos, "blob" o "texto".
Lo analizaremos para JMP 15. ¿Desea agregarlo como un elemento de la lista de deseos?
Gracias
-Bryan
Re: Respuesta API codificada como GzipTodavía puede usar Descargar en lugar de Enviar.
Lo que muestra lo anterior es que ha obtenido una descarga completa de su servicio web. (lo que es bueno)
para usar Descargar en lugar de Enviar, puede hacer esto:
filename = request << Download("$temp/Test1.xlsx", "replace"); //file is the filename returned by the web server. replace will replace it.
if( !IsEmpty(filename), //a filename is empty if the download fails
//process your file
);
En su caso, el tipo MIME es "text/html" y no una hoja de cálculo de Excel. Acabas de nombrarlo con una extensión xlsx.
Si su servicio web tiene un punto final diferente para las hojas de cálculo de Excel, utilícelo.
o
Si su servicio web usa un encabezado "Aceptar" para especificar una hoja de cálculo de Excel, utilícelo
de lo contrario
Abra el archivo con un editor de texto para ver qué es. (o un navegador) De acuerdo con el tipo mime, descargó html.
Re: Respuesta API codificada como Gzip@bryan_boone ,
Gracias por eso.

Si bien esto es útil hasta cierto punto, no veo otra forma que no sea descargar los datos, descomprimirlos e interpretarlos dentro de JMP, ¿es correcta mi interpretación o tiene algún otro enfoque?
Re: Respuesta API codificada como GzipLo que tiene en su código es que Solicitud es el resultado de Enviar.
Yo *creo* que lo que quieres es:
request = New Http Request(
URL( URLDes),
Method("GET"),
Headers({HeaderStr})
); //request is the request object
data = request << Send(); //data is the data returned by the web server
De esa manera, puede examinar el estado de la solicitud después de haber interactuado con el servicio.
Generalmente pienso en las solicitudes HTTP en 3 pasos
Crear
Configurar
Enviar
Re: Respuesta API codificada como Gzip@bryan_boone ,
Todos los mensajes devuelven el mismo error. Cuando intento descargar el archivo como @Craige_Hales recomendado, funciona bien, pero ninguna de las funciones de diagnóstico arrojó ningún resultado
Re: Respuesta API codificada como Gzip@Jeff_Perkinson ,
Aquí está el error que recibo:
Intenté abrir: /C:/Users/Test.xlsx
No se puede abrir la tabla en el acceso o evaluación de 'Open', Open/*###*/("C:\Users\Test.xlsx")
Re: Respuesta API codificada como GzipAdemás,
Que hace
request << Get Status Message
¿mostrar?
Ese será el mensaje de estado del servidor web (200 es bueno)
Existen:
request << Get Status // a number
//booleans
request << Is Successful
request << Has Error
request << Has Client Error
request << Has Server Error
request << Has Information
request << Has Redirection
Estos le permitirán dar información sobre la conexión y la solicitud que se realizó al servidor.
Re: Respuesta API codificada como Gziprequest << Send() devolverá un blob o un texto.
Para ver lo que tienes llama:
solicitud << Obtener Tipo Mime();
la mayoría de ellos están cubiertos aquí:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
Depende del servidor si realmente agregan información de tipo mime, pero en estos días, la mayoría de ellos lo hacen.
Re: Respuesta API codificada como Gzip
@uday_guntupalli escribió:
Veo que el archivo se descarga, pero JMP no puede abrirlo ni manualmente ni a través de un script. Traté de introducir una espera () entre la descarga y la apertura y eso tampoco ayudó.

¿Cuál es el resto del mensaje de error, arriba de la línea "En el siguiente script..."?
¿Puedes abrir el archivo .xlsx descargado usando Excel?
Re: Respuesta API codificada como Gzip@Craige_Hales ,
Gracias Craige. Me lleva al 95% de mi camino allí. Veo que el archivo se descarga, pero JMP no puede abrirlo ni manualmente ni a través de un script. Traté de introducir una espera () entre la descarga y la apertura y eso tampoco ayudó.

Re: Respuesta API codificada como GzipNo estoy seguro de cómo recuperar un blob de <
request = New HTTP Request(
URL(
"http://drawoutside.com/abc123.xlsx"
),
Method( "Get" )
);
request<<DOWNLOAD></DOWNLOAD>
JMP's open function imported the xlsx fileLa función de apertura de JMP importó el archivo xlsx
@bryan_boone
Re: Respuesta API codificada como Gzip@Craige_Hales ,
Aprecio que trates de guiarme cuando no estoy en el trabajo. Probemos mañana cuando vuelvas. Pero, esto es lo que hice:
Si la respuesta fue de hecho un archivo zip, entonces esto no funcionó. Creo que es un archivo de Excel, porque pude usar el comando WriteBin y el comando de contenido en R para escribirlo como un archivo de Excel. Sin embargo, no tengo idea de cómo capturarlo en JMP.
Además, también probé esto:
Esto también da como resultado un error:
Error con el archivo: la ruta no es válida: \PK.
Re: Respuesta API codificada como GzipEn realidad, los archivos de Excel probablemente sean archivos zip, con una extensión xlsx. Es posible que ya tenga exactamente lo que espera.
Re: Respuesta API codificada como Gzip"PK" es la firma de los archivos .zip. Si los datos se recibieron en un blob (el texto no tendrá los datos binarios), puede usar el objeto de archivo zip de JMP para abrirlo, algo como esto (no funciona en este momento...)
za = abrir(blob,"zip");
za<
za<
(mejor mira en el índice de secuencias de comandos.)