Я работаю над проектом по преобразованию файла .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 (неверный запрос). Скриншот ошибки показан ниже.
Пару дней назад я выполнил ту же команду и скачал файл соответствующим образом, однако я не помню, что отличалось. Может кто-нибудь подсказать, что не так с форматом запроса?
Я считаю, что это не имеет ничего общего с недопустимым TOKEN/SURN/OURN и т. д., потому что в этом случае я бы не получил ошибку неверного формата сообщения.
Чтобы загрузить объект из 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-запросе. «+» будет означать пробел, «/» будет означать разделитель глаголов, а «=» — присваивание переменной. Пожалуйста, удалите '=' в конце вашего запроса выше, и он должен работать нормально.
Это очень странно. Вы уверены в своем производномUrn? Можете ли вы отправить мне свой манифест по электронной почте? В cyrille@autodesk. ком. Я посмотрю и скажу вам причину
Я отправил Вам электронное письмо по указанному выше адресу. Я совершенно уверен в производной урне.
Только что ответил полным ответом по электронной почте, но я только что заметил на вашем снимке экрана, что вы используете строку с кодировкой base64 по сравнению с безопасной строкой с кодировкой base64. Это может быть причиной. Пожалуйста, удалите завершающий знак =,
Да, это решило проблему. Можете ли вы опубликовать это как ответ, чтобы я мог его принять?
Спасибо за ваш ответ. Я попробовал описанный выше метод, и выходной файл всегда имеет длину 76 байт и содержит следующую ошибку: {"diagnostic":"Запрашиваемая производная не принадлежит проектным данным."}