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<<打开(成员)
(最好查看脚本索引。)