Réponse API encodée en GzipTous,
J'appuie sur une API interne et la réponse attendue du point de terminaison de l'API est un fichier Excel. Cependant, lorsque j'essaie d'utiliser une requête HTTP, je reçois une réponse. Je suppose que la réponse est codée, mais je me demande quel est le bon moyen d'extraire les données et de les utiliser.
La requête que je fais au point de terminaison est la suivante :
HeaderStr = "Authorization: Bearer " || AccessToken;
Request = New HTTP Request(
URL( URLDes ),
Method( "Get" ),
Headers( {HeaderStr} )
) << Send;La réponse que je reçois est :
"PK"
Re : Réponse API encodée en GzipBien sûr @bryan_boone . J'aime contribuer à rendre JMP meilleur et plus simple, cela nous facilite la vie 

Re : Réponse API encodée en Gzip@uday_guntupalli
C'est une excellente utilisation pour avoir
Requête HTTP << Envoyer des arguments d'acceptation, disons, "blob" ou "texte".
Nous l'examinerons pour JMP 15. Souhaitez-vous l'ajouter en tant qu'élément de la liste de souhaits ?
Merci
-Bryan
Re : Réponse API encodée en GzipVous pouvez toujours utiliser Télécharger au lieu d'Envoyer.
Ce que montre ci-dessus, c'est que vous avez obtenu un téléchargement complet à partir de votre service Web. (ce qui est bon)
pour utiliser Télécharger au lieu d'Envoyer, vous pouvez faire ceci :
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
);
Dans votre cas, le type mime est "text/html" et non une feuille de calcul Excel. Vous venez de le nommer avec l'extension xlsx.
Si votre service Web a un point de terminaison différent pour les feuilles de calcul Excel, utilisez-le.
ou alors
Si votre service Web utilise un en-tête "Accepter" pour spécifier une feuille de calcul Excel, utilisez-le
autrement
Ouvrez le fichier avec un éditeur de texte pour voir de quoi il s'agit. (ou un navigateur) Selon le mimetype, vous avez téléchargé html.
Re : Réponse API encodée en Gzip@bryan_boone ,
Merci pour ça.

Bien que cela soit utile dans une certaine mesure, je ne vois pas d'autre moyen que de télécharger les données, de les décompresser et de les interpréter dans JMP, mon interprétation est-elle correcte ou avez-vous d'autres approches ?
Re : Réponse API encodée en GzipCe que vous avez dans votre code, c'est que Request est le résultat de Send.
Je *pense* que ce que tu veux c'est :
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 cette façon, vous pouvez examiner l'état de la demande après avoir interagi avec le service.
Je pense généralement aux trucs de requête HTTP en 3 étapes
Créer
Configurer
Envoyer
Re : Réponse API encodée en Gzip@bryan_boone ,
Tous les messages renvoient la même erreur. Lorsque j'essaie de télécharger le fichier en tant que @Craige_Hales recommandé, cela fonctionne bien, mais aucune des fonctions de diagnostic n'a donné de résultat
Re : Réponse API encodée en Gzip@Jeff_Perkinson ,
Voici l'erreur que je reçois :
Tentative d'ouverture : /C:/Users/Test.xlsx
Impossible d'ouvrir la table dans l'accès ou l'évaluation de 'Open' , Open/*###*/("C:\Users\Test.xlsx")
Re : Réponse API encodée en GzipEn outre,
Que signifie
request << Get Status Message
Afficher?
Ce sera le message d'état du serveur Web (200 est bon)
Il y a:
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
Ceux-ci vous permettront de donner des informations sur la connexion et la requête qui a été faite au serveur.
Re : Réponse API encodée en Gziprequest << Send() renverra soit un blob soit du texte.
Pour voir ce que vous avez appelez :
requête << Obtenir le type MIME();
la plupart d'entre eux sont couverts ici:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
C'est au serveur de décider s'il ajoute réellement des informations de type mime, mais de nos jours, la plupart d'entre eux le font.
Re : Réponse API encodée en Gzip
@uday_guntupalli a écrit:
Je vois que le fichier est téléchargé, mais JMP ne parvient pas à l'ouvrir manuellement ou via un script. J'ai essayé d'introduire un wait() entre le téléchargement et l'ouverture et cela n'a pas aidé non plus.

Quel est le reste du message d'erreur, au-dessus de la ligne "Dans le script suivant..." ?
Pouvez-vous ouvrir le fichier .xlsx téléchargé à l'aide d'Excel ?
Re : Réponse API encodée en Gzip@Craige_Hales ,
Merci Craig. Ça m'amène à 95 % de mon chemin. Je vois que le fichier est téléchargé, mais JMP ne parvient pas à l'ouvrir manuellement ou via un script. J'ai essayé d'introduire un wait() entre le téléchargement et l'ouverture et cela n'a pas aidé non plus.

Re : Réponse API encodée en GzipVous ne savez pas comment récupérer un blob depuis <
request = New HTTP Request(
URL(
"http://drawoutside.com/abc123.xlsx"
),
Method( "Get" )
);
request<<DOWNLOAD></DOWNLOAD>
JMP's open function imported the xlsx fileLa fonction d'ouverture de JMP a importé le fichier xlsx
@bryan_boone
Re : Réponse API encodée en Gzip@Craige_Hales ,
J'apprécie que vous essayiez de me guider quand je ne suis pas au travail. Essayons demain quand tu seras de retour. Mais, voici ce que j'ai fait :
Si la réponse était bien un fichier zip, cela n'a pas fonctionné. Je pense que c'est un fichier Excel, car j'ai pu utiliser la commande WriteBin et la commande de contenu dans R pour l'écrire sous forme de fichier Excel. Cependant, je n'ai aucune idée de comment le capturer dans JMP.
En complément, j'ai aussi essayé ceci :
Cela se traduit également par une erreur :
Erreur avec le fichier : le chemin n'est pas valide : \PK.
Re : Réponse API encodée en GzipEn fait, les fichiers Excel sont probablement des fichiers zip, avec une extension xlsx. Vous avez peut-être déjà exactement ce que vous attendez.
Re : Réponse API encodée en Gzip"PK" est la signature des fichiers .zip. Si les données ont été reçues dans un blob (le texte n'aura pas les données binaires), vous pouvez utiliser l'objet d'archive zip de JMP pour l'ouvrir, quelque chose comme ça (pas au travail pour le moment...)
za = ouvrir(blob,"zip");
za<
za<
(meilleur regard dans l'index de script.)