API-Antwort als Gzip codiertAlle,
Ich tippe auf eine interne API und die erwartete Antwort des API-Endpunkts ist eine Excel-Datei. Wenn ich jedoch versuche, eine HTTP-Anforderung zu verwenden, erhalte ich eine Antwort. Ich gehe davon aus, dass die Antwort verschlüsselt ist, aber ich frage mich, was eine gute Möglichkeit ist, die Daten zu extrahieren und zu verwenden.
Die Anfrage, die ich an den Endpunkt stelle, lautet wie folgt:
HeaderStr = "Authorization: Bearer " || AccessToken;
Request = New HTTP Request(
URL( URLDes ),
Method( "Get" ),
Headers( {HeaderStr} )
) << Send;Als Antwort bekomme ich:
"PK"
Betreff: API-Antwort als Gzip codiertSelbstverständlich @bryan_boone . Ich liebe es, dazu beizutragen, JMP besser und einfacher zu machen, damit es unser Leben einfacher macht 

Betreff: API-Antwort als Gzip codiert@uday_guntupalli
Das ist eine großartige Verwendung für das Haben
HTTP-Anfrage << Akzeptieren, sagen wir, „blob“- oder „text“-Argumente senden.
Wir werden es für JMP 15 prüfen. Möchten Sie es als Artikel auf der Wunschliste hinzufügen?
Vielen Dank
-Bryan
Betreff: API-Antwort als Gzip codiertSie können weiterhin Herunterladen anstelle von Senden verwenden.
Das Obige zeigt, dass Sie einen vollständigen Download von Ihrem Webdienst erhalten haben. (was gut ist)
Um Herunterladen statt Senden zu verwenden, können Sie Folgendes tun:
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
);
In Ihrem Fall ist der Mimetyp "text/html" und keine Excel-Tabelle. Sie haben es gerade mit der Erweiterung xlsx benannt.
Wenn Ihr Webdienst einen anderen Endpunkt für Excel-Tabellen hat, verwenden Sie diesen.
oder
Wenn Ihr Webdienst einen "Accept"-Header verwendet, um eine Excel-Tabelle anzugeben, verwenden Sie diesen
Andernfalls
Öffnen Sie die Datei mit einem Texteditor, um zu sehen, was es ist. (oder ein Browser) Entsprechend dem Mimetyp haben Sie HTML heruntergeladen.
Betreff: API-Antwort als Gzip codiert@bryan_boone ,
Danke für das.

Dies ist zwar bis zu einem gewissen Grad hilfreich, aber ich sehe keinen anderen Weg, als die Daten herunterzuladen, zu dekomprimieren und in JMP zu interpretieren. Ist meine Interpretation korrekt oder haben Sie andere Ansätze?
Betreff: API-Antwort als Gzip codiertWas Sie in Ihrem Code haben, ist, dass Request das Ergebnis von Send ist.
Ich *denke* was du willst ist:
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
Auf diese Weise können Sie den Status der Anfrage überprüfen, nachdem Sie mit dem Dienst interagiert haben.
Ich denke im Allgemeinen über HTTP-Anforderungen in 3 Schritten nach
Erstellen
Konfigurieren
Senden
Betreff: API-Antwort als Gzip codiert@bryan_boone ,
Alle Nachrichten geben denselben Fehler zurück. Wenn ich versuche, die Datei als herunterzuladen @Craige_Hales empfohlen, es funktioniert einwandfrei, aber keine der Diagnosefunktionen hat zu einem Ergebnis geführt
Betreff: API-Antwort als Gzip codiert@Jeff_Perkinson ,
Hier ist der Fehler, den ich erhalte:
Versucht zu öffnen: /C:/Users/Test.xlsx
Kann Tabelle beim Zugriff oder Auswertung von 'Open' nicht öffnen , Open/*###*/("C:\Users\Test.xlsx")
Betreff: API-Antwort als Gzip codiertZusätzlich,
Was macht
request << Get Status Message
Show?
Das ist die Statusmeldung vom Webserver (200 ist gut)
Es gibt:
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
Diese geben Auskunft über die Verbindung und die Anfrage, die an den Server gestellt wurde.
Betreff: API-Antwort als Gzip codiertrequest << Send() gibt entweder einen Blob oder Text zurück.
Um zu sehen, was Sie haben, rufen Sie an:
Anfrage << Get Mime Type();
Die meisten davon werden hier behandelt:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
Es ist Sache des Servers, ob er Mime-Typ-Informationen hinzufügt, aber heutzutage tun dies die meisten von ihnen.
Betreff: API-Antwort als Gzip codiert
@uday_guntupalli schrieb:
Ich sehe, dass die Datei heruntergeladen wird, aber JMP kann sie weder manuell noch per Skript öffnen. Ich habe versucht, ein wait() zwischen dem Download und dem Öffnen einzuführen, und das hat auch nicht geholfen.

Wie lautet der Rest der Fehlermeldung über der Zeile „Im folgenden Skript …“?
Können Sie die heruntergeladene .xlsx-Datei mit Excel öffnen?
Betreff: API-Antwort als Gzip codiert@Craige_Hales ,
Danke Craige. Bringt mich zu 95% dorthin. Ich sehe, dass die Datei heruntergeladen wird, aber JMP kann sie weder manuell noch per Skript öffnen. Ich habe versucht, ein wait () zwischen dem Download und dem Öffnen einzuführen, und das hat auch nicht geholfen.

Betreff: API-Antwort als Gzip codiertIch bin mir nicht sicher, wie ich einen Blob von <
request = New HTTP Request(
URL(
"http://drawoutside.com/abc123.xlsx"
),
Method( "Get" )
);
request<<DOWNLOAD></DOWNLOAD>
JMP's open function imported the xlsx fileDie Open-Funktion von JMP importierte die xlsx-Datei
@bryan_boone
Betreff: API-Antwort als Gzip codiert@Craige_Hales ,
Ich weiß es zu schätzen, dass Sie versuchen, mich zu führen, wenn ich nicht bei der Arbeit bin. Versuchen wir es morgen, wenn Sie zurück sind. Aber hier ist, was ich getan habe:
Wenn die Antwort tatsächlich eine ZIP-Datei war, hat dies nicht funktioniert. Ich denke, es ist eine Excel-Datei, weil ich den WriteBin-Befehl und den Inhaltsbefehl in R verwenden konnte, um sie als Excel-Datei zu schreiben. Ich habe jedoch keine Ahnung, wie ich es in JMP erfassen soll.
Zusätzlich habe ich auch das versucht:
Auch dies führt zu einem Fehler:
Fehler bei Datei: Pfad ist ungültig: \PK.
Betreff: API-Antwort als Gzip codiertTatsächlich handelt es sich bei Excel-Dateien wahrscheinlich um Zip-Dateien mit der Erweiterung xlsx. Möglicherweise haben Sie bereits genau das, was Sie erwarten.
Betreff: API-Antwort als Gzip codiert"PK" ist die Signatur für .zip-Dateien. Wenn die Daten in einem Blob empfangen wurden (Text enthält keine Binärdaten), können Sie das ZIP-Archivobjekt von JMP verwenden, um es zu öffnen, etwa so (im Moment nicht in Arbeit ...)
za = open(blob,"zip");
za<
za<<öffnen(Mitglied)
(am besten im Scripting-Index nachsehen.)