Risposta API codificata come GzipTutti,
Sto toccando un'API interna e la risposta prevista dell'endpoint API è un file Excel. Tuttavia, quando provo a utilizzare la richiesta HTTP, ricevo una risposta. Presumo che la risposta sia codificata, ma mi chiedo quale sia un buon modo per estrarre i dati e utilizzarli.
La richiesta che faccio all'endpoint è la seguente:
HeaderStr = "Authorization: Bearer " || AccessToken;
Request = New HTTP Request(
URL( URLDes ),
Method( "Get" ),
Headers( {HeaderStr} )
) << Send;La risposta che ricevo è:
"PK"
Ri: Risposta API codificata come GzipCerto @bryan_boone . Mi piace contribuire a rendere JMP migliore e più facile, quindi rende le nostre vite più facili 

Ri: Risposta API codificata come Gzip@uday_guntupalli
Questo è un ottimo uso per avere
Richiesta HTTP << Invia accetta, ad esempio, argomenti "blob" o "text".
Lo esamineremo per JMP 15. Vuoi aggiungerlo come elemento della lista dei desideri?
Grazie
-Bryan
Ri: Risposta API codificata come GzipPuoi comunque utilizzare Scarica invece di Invia.
Ciò che mostra sopra è che hai ottenuto un download completo dal tuo servizio web. (che è buono)
per utilizzare Scarica invece di Invia, puoi procedere come segue:
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
);
Nel tuo caso, il mimetype è "text/html" e non un foglio di calcolo Excel. L'hai appena chiamato con estensione xlsx.
Se il tuo servizio Web ha un endpoint diverso per i fogli di calcolo Excel, utilizzalo.
o
Se il tuo servizio Web utilizza un'intestazione "Accetta" per specificare un foglio di calcolo Excel, utilizzalo
altrimenti
Apri il file con un editor di testo per vedere di cosa si tratta. (o un browser) In base al tipo mime, hai scaricato html.
Ri: Risposta API codificata come Gzip@bryan_boone ,
Grazie per questo.

Sebbene ciò sia utile in una certa misura, non vedo altro modo che scaricare i dati, decomprimerli e interpretarli all'interno di JMP, la mia interpretazione è corretta o hai altri approcci?
Ri: Risposta API codificata come GzipQuello che hai nel tuo codice è che Request è il risultato di Send.
Io *penso* quello che vuoi è:
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
In questo modo puoi esaminare lo stato della richiesta dopo aver interagito con il servizio.
In genere penso alle cose di richiesta HTTP in 3 passaggi
Creare
Configura
Inviare
Ri: Risposta API codificata come Gzip@bryan_boone ,
Tutti i messaggi restituiscono lo stesso errore. Quando provo a scaricare il file come @Craige_Hales consigliato, funziona bene, ma nessuna delle funzioni diagnostiche ha prodotto alcun risultato
Ri: Risposta API codificata come Gzip@Jeff_Perkinson ,
Ecco l'errore che ricevo:
Ho provato ad aprire: /C:/Users/Test.xlsx
Impossibile aprire la tabella in accesso o valutazione di 'Open' , Open/*###*/("C:\Users\Test.xlsx")
Ri: Risposta API codificata come GzipInoltre,
Cosa fa
request << Get Status Message
mostrare?
Questo sarà il messaggio di stato dal Web Server (200 va bene)
Ci sono:
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
Questi ti permetteranno di fornire informazioni sulla connessione e sulla richiesta che è stata fatta al server.
Ri: Risposta API codificata come Gziprequest << Send() restituirà un blob o un testo.
Per vedere cosa hai chiamato:
request << Ottieni il tipo Mime();
la maggior parte di essi è trattata qui:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
Spetta al server se effettivamente aggiungono informazioni sul tipo mime, ma oggigiorno la maggior parte di loro lo fa.
Ri: Risposta API codificata come Gzip
@uday_guntupalli ha scritto:
Vedo che il file viene scaricato, ma JMP non riesce ad aprirlo né manualmente né tramite script. Ho provato a introdurre un wait () tra il download e l'apertura e neanche questo ha aiutato.

Qual è il resto del messaggio di errore, sopra la riga "Nel seguente script..."?
Sei in grado di aprire il file .xlsx scaricato utilizzando Excel?
Ri: Risposta API codificata come Gzip@Craige_Hales ,
Grazie Craig. Mi fa arrivare al 95% della mia strada. Vedo che il file viene scaricato, ma JMP non riesce ad aprirlo né manualmente né tramite script. Ho provato a introdurre un wait () tra il download e l'apertura e neanche questo ha aiutato.

Ri: Risposta API codificata come GzipNon sono sicuro di come recuperare un BLOB da <
request = New HTTP Request(
URL(
"http://drawoutside.com/abc123.xlsx"
),
Method( "Get" )
);
request<<DOWNLOAD></DOWNLOAD>
JMP's open function imported the xlsx fileLa funzione open di JMP ha importato il file xlsx
@bryan_boone
Ri: Risposta API codificata come Gzip@Craige_Hales ,
Apprezzo che cerchi di guidarmi quando non sono al lavoro. Proviamo domani quando torni. Ma ecco cosa ho fatto:
Se la risposta era davvero un file zip, allora non ha funzionato. Penso che sia un file excel, perché sono stato in grado di utilizzare il comando WriteBin e il comando contenuto in R per scriverlo come file Excel. Tuttavia, non ho idea di come acquisirlo in JMP.
Inoltre, ho anche provato questo:
Ciò si traduce anche in un errore:
Errore con il file: percorso non valido: \PK.
Ri: Risposta API codificata come GzipIn realtà, i file excel probabilmente sono file zip, con estensione xlsx. Potresti già avere esattamente quello che ti aspetti.
Ri: Risposta API codificata come Gzip"PK" è la firma per i file .zip. Se i dati sono stati ricevuti in un BLOB (il testo non avrà i dati binari) è possibile utilizzare l'oggetto archivio zip di JMP per aprirlo, qualcosa del genere (non al lavoro in questo momento...)
za = apri(blob,"zip");
za<
za<
(guardare meglio nell'indice di scripting.)