Autodesk Forge-使用curl下载文件

时间:2019-05-15 17:30:43

标签: curl command-line autodesk-forge

我正在一个项目中,通过python脚本将.sldprt转换为.obj文件。我正在关注this教程。在最后一部分中,我必须将翻译后的文件下载到本地计算机上。下载文件的命令行命令如下(步骤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错误(错误请求)。错误的屏幕截图如下所示。enter image description here

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

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

1 个答案:

答案 0 :(得分: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编码的urn容器,而使用的是安全的base64编码的urn。这实际上是不正确的,因为base64编码的字符串可以包含诸如'+ / ='之类的字符,这在HTTP请求中具有不同的含义。 “ +”表示空格,“ /”表示动词分隔符,“ =”表示变量赋值。 请在上面的请求中删除结尾的'=',它应该可以正常工作。