Autodesk Forge — скачать файл с помощью curl

Я работаю над проектом по преобразованию файла .sldprt в файл .obj через скрипт python. Я следую учебнику это. В последней части я должен загрузить переведенный файл на свой локальный компьютер. Команда командной строки для загрузки файла выглядит следующим образом (ШАГ 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 (неверный запрос). Скриншот ошибки показан ниже.Autodesk Forge — скачать файл с помощью curl

Пару дней назад я выполнил ту же команду и скачал файл соответствующим образом, однако я не помню, что отличалось. Может кто-нибудь подсказать, что не так с форматом запроса?

Я считаю, что это не имеет ничего общего с недопустимым TOKEN/SURN/OURN и т. д., потому что в этом случае я бы не получил ошибку неверного формата сообщения.

Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
237
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 байт и содержит следующую ошибку: {"diagnostic":"Запрашиваемая производная не принадлежит проектным данным."}

Umar Dastgir 15.05.2019 23:15

Это очень странно. Вы уверены в своем производномUrn? Можете ли вы отправить мне свой манифест по электронной почте? В cyrille@autodesk. ком. Я посмотрю и скажу вам причину

cyrille 16.05.2019 15:38

Я отправил Вам электронное письмо по указанному выше адресу. Я совершенно уверен в производной урне.

Umar Dastgir 16.05.2019 18:15

Только что ответил полным ответом по электронной почте, но я только что заметил на вашем снимке экрана, что вы используете строку с кодировкой base64 по сравнению с безопасной строкой с кодировкой base64. Это может быть причиной. Пожалуйста, удалите завершающий знак =,

cyrille 17.05.2019 01:01

Да, это решило проблему. Можете ли вы опубликовать это как ответ, чтобы я мог его принять?

Umar Dastgir 20.05.2019 22:27

Другие вопросы по теме