Autodesk Forge - 使用 curl 下载文件

Posted

技术标签:

【中文标题】Autodesk Forge - 使用 curl 下载文件【英文标题】:Autodesk Forge - download a file using curl 【发布时间】:2019-10-02 22:02:51 【问题描述】:

我正在做一个项目,通过 python 脚本将 .sldprt 转换为 .obj 文件。我正在关注this 教程。在最后一部分,我必须将翻译后的文件下载到我的本地机器上。下载文件的命令行命令如下(STEP 5)

sudo curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$SURN/manifest/$OURN" -o $OUTFILE

其中 $TOKEN 是访问令牌,$SURN 是上传文件 URN,OURN 是输出文件 URL,$OUTFILE 是输出文件名(在本例中为 output.obj)

我意识到执行上述命令会给我带来 HTTP 400 错误(错误请求)。错误截图如下。

几天前,我确实执行了相同的命令并正确下载了文件,但是我不记得有什么不同。有人可以指导我请求格式有什么问题吗?

我认为这与无效的 TOKEN/SURN/OURN 等无关,因为在这种情况下,我不会收到无效的消息格式错误。

【问题讨论】:

【参考方案1】:

要从 OSS 下载对象,您需要使用如下命令:

curl -X GET https://developer.api.autodesk.com/oss/v2/buckets/mybucket/objects/myobjectref -H "Authorization: $bearer" -o myfile.ext

要获取对象清单及其所有派生类,您需要调用:

curl -X GET https://developer.api.autodesk.com/modelderivative/v2/designdata/$urn/manifest -H "Authorization: $bearer"

如果清单不存在,此清单请求应返回空响应和 404 状态代码。添加 -v 选项以查看 404 错误。 .../$urn/manifest/$derivativeUrn 请求应该返回一个空响应和一个 400 状态码(不是一个有效的请求)如果派生不存在。

现在来完成我的回答,清单是一个 JSON 响应,它描述了对象如何被转换为各种衍生品以及可用于提取的内容与作为所有衍生品的种子文件的对象。

现在如果你想下载一个衍生品(例如一个 OBJ),你需要获取衍生品 URN(指向 OBJ 翻译的那个)并调用:

curl -X GET https://developer.api.autodesk.com/modelderivative/v2/designdata/$urn/manifest/$derivativeUrn -H "Authorization: $bearer"

$urn 指向种子文件,$derivativeUrn 指向你可以在清单文件中找到的 obj 衍生文件。

编辑:我刚刚在上面的屏幕截图中注意到,您使用的是 base64 编码的骨灰盒与安全的 base64 编码的骨灰盒。这实际上是不正确的,因为 base64 编码的字符串可以包含像 '+ / = ' 这样的字符,这在 HTTP 请求中具有不同的含义。 '+' 表示空格,'/' 表示动词分隔符,'=' 表示变量赋值。 请删除上述请求中的尾随“=”,它应该可以正常工作。

【讨论】:

感谢您的回复。我尝试了上述方法,输出文件始终为 76 字节长并包含以下错误:“诊断”:“请求的导数不属于设计数据。” 这很奇怪。你确定你的derivedUrn吗?你能把你的清单发邮件给我吗?在 cyrille@autodesk 。 com。我去看看,告诉你原因 我已经通过上述地址向您发送了一封电子邮件。我很确定派生的骨灰盒。 刚刚通过电子邮件回复了一个完整的答案,但我刚刚在您的屏幕截图中注意到您使用的是 base64 编码字符串与安全的 base64 编码字符串。这可能是原因。请删除尾随的 =, 是的,这解决了问题。您可以将此作为答案发布,以便我接受吗?

以上是关于Autodesk Forge - 使用 curl 下载文件的主要内容,如果未能解决你的问题,请参考以下文章

下载版本名称为 Autodesk Forge 的文件

Autodesk-forge 查看器:访问令牌

Autodesk forge 场景链接下载无法解压

Autodesk-forge,2 腿身份验证 (OAuth):oauth

Autodesk Forge - 指定要上传的文件的路径

Autodesk Forge Reality Capture:不重建完整的网格