API 響應編碼為 Gzip全部,
我正在利用一個內部 API,API 端點的預期響應是一個 Excel 文件。 但是,當我嘗試使用 HTTP 請求時,我收到了響應。 我假設響應已編碼,但我想知道提取數據並使用它的好方法是什麼。
我向端點發出的請求如下:
HeaderStr = "Authorization: Bearer " || AccessToken;
Request = New HTTP Request(
URL( URLDes ),
Method( "Get" ),
Headers( {HeaderStr} )
) << Send;我收到的回復是:
"PK"
回复:API 響應編碼為 Gzip當然@bryan_boone . 我喜歡為讓 JMP 變得更好、更容易做出貢獻,從而讓我們的生活更輕鬆 

回复:API 響應編碼為 Gzip@uday_guntupalli
這是一個很好的用法
HTTP 請求 << 發送接受“blob”或“文本”參數。
我們將針對 JMP 15 對其進行研究。您想將其添加為願望清單項目嗎?
謝謝
-布萊恩
回复:API 響應編碼為 Gzip您仍然可以使用下載而不是發送。
上面顯示的是您已經從您的網絡服務中獲得了完整的下載。 (這很好)
要使用下載而不是發送,您可以這樣做:
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
);
在您的情況下,mimetype 是“text/html”而不是 excel 電子表格。 您剛剛將其命名為 xlsx 擴展名。
如果您的網絡服務對 excel 電子表格有不同的端點,請使用它。
或者
如果您的 Web 服務使用和“接受”標頭來指定 Excel 電子表格,請使用
否則
使用文本編輯器打開該文件以查看它是什麼。 (或瀏覽器)根據mimetype,你下載了html。
回复:API 響應編碼為 Gzip@bryan_boone ,
謝謝你。

雖然這在某種程度上有幫助,但除了下載數據、解壓縮數據並在 JMP 中進行解釋之外,我看不到其他方法,我的解釋是否正確,或者您是否有任何其他方法?
回复:API 響應編碼為 Gzip您在代碼中所擁有的是 Request 是 Send 的結果。
我*認為*你想要的是:
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
這樣您就可以在與服務交互後檢查請求的狀態。
我通常分 3 個步驟來考慮 HTTP 請求的東西
創建
配置
發送
回复:API 響應編碼為 Gzip@bryan_boone ,
所有消息都返回相同的錯誤。 當我嘗試下載文件時@Craige_Hales推薦,它工作正常,但沒有任何診斷功能產生任何結果
回复:API 響應編碼為 Gzip@Jeff_Perkinson ,
這是我收到的錯誤:
試圖打開:/C:/Users/Test.xlsx
無法在“打開”的訪問或評估中打開表,打開/*###*/("C:\Users\Test.xlsx")
回复:API 響應編碼為 Gzip此外,
做什麼
request << Get Status Message
展示?
這將是來自 Web 服務器的狀態消息(200 是好的)
有:
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
這些將讓您提供有關連接和向服務器發出的請求的信息。
回复:API 響應編碼為 Gziprequest << Send() 將返回 blob 或文本。
要查看您的電話:
請求 << 獲取 Mime 類型();
其中大部分都在這裡介紹:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
是否真正添加 MIME 類型信息取決於服務器,但如今,大多數服務器都這樣做了。
回复:API 響應編碼為 Gzip
@uday_guntupalli寫道:
我看到文件已下載,但 JMP 無法手動或通過腳本打開它。 我試圖在下載和打開之間引入一個 wait() ,但這也無濟於事。

“在以下腳本中...”行上方的錯誤消息的其餘部分是什麼?
您可以使用 Excel 打開下載的 .xlsx 文件嗎?
回复:API 響應編碼為 Gzip@Craige_Hales ,
謝謝克雷奇。 讓我 95% 到達那裡。 我看到文件已下載,但 JMP 無法手動或通過腳本打開它。 我試圖在下載和打開之間引入一個 wait() ,但這也無濟於事。

回复:API 響應編碼為 Gzip不確定如何從 <
request = New HTTP Request(
URL(
"http://drawoutside.com/abc123.xlsx"
),
Method( "Get" )
);
request<<DOWNLOAD></DOWNLOAD>
JMP's open function imported the xlsx fileJMP 的 open 函數導入了 xlsx 文件
@bryan_boone
回复:API 響應編碼為 Gzip@Craige_Hales ,
感謝您在不工作時嘗試指導我。 明天你回來的時候試試吧。 但是,這就是我所做的:
如果響應確實是一個 zip 文件,那麼這是行不通的。 我認為它是一個 excel 文件,因為我能夠在 R 中使用 WriteBin 命令和 content 命令將它寫成 Excel 文件。 但是,我不知道如何在 JMP 中捕獲它。
另外,我也試過這個:
這也會導致錯誤:
文件錯誤:路徑無效:\PK。
回复:API 響應編碼為 Gzip實際上,excel 文件可能是 zip 文件,擴展名為 xlsx。 您可能已經擁有了您所期望的。
回复:API 響應編碼為 Gzip“PK”是 .zip 文件的簽名。 如果數據是在 blob 中接收的(文本不會有二進制數據),您可以使用 JMP 的 zip 存檔對像打開它,就像這樣(現在不工作......)
za = open(blob,"zip");
za<<成員
za<<打開(成員)
(最好查看腳本索引。)