#autodesk-forge
Вопрос:
Я использую обратный вызов OnProgress в своей программе worktitem, но у меня возникают следующие трудности при попытке отправить заголовки с помощью !ACESAPI:операция aceshttpоперация.
- Согласно https://forge.autodesk.com/blog/cannot-match-arguments-error-when-using-aceshttpoperation следующая строка удовлетворяет регулярному выражению.
[08/12/2021 22:59:57] !ACESAPI:acesHttpOperation(GetFormaletas,?pk=30204db6-fe6c-4368-99a0-972781eb66c9,Authorization:Api-Key UI3rAhEG.rP5qlYHuwmw9664udwB9cbKs2OXMpMhX,,file://30204db6-fe6c-4368-99a0-972781eb66c9formaletas.csv)
А ниже вы можете увидеть, что получает каждый аргумент.
[08/12/2021 22:59:57] !!!!This is an API callback => "!ACESAPI:acesHttpOperation(GetFormaletas,?pk=30204db6-fe6c-4368-99a0-972781eb66c9,Authorization:Api-Key UI3rAhEG.rP5qlYHuwmw9664udwB9cbKs2OXMpMhX,,file://30204db6-fe6c-4368-99a0-972781eb66c9formaletas.csv)"
[08/12/2021 22:59:57] Start processing API request acesHttpOperation.
[08/12/2021 22:59:57] Arguments => name="GetFormaletas", suffix="?pk=30204db6-fe6c-4368-99a0-972781eb66c9", headers="Authorization:Api-Key UI3rAhEG.rP5qlYHuwmw9664udwB9cbKs2OXMpMhX", requestContent="", responseFile="file://30204db6-fe6c-4368-99a0-972781eb66c9formaletas.csv"
[08/12/2021 22:59:57] - Download variadic item from "http://e320ece2e3e5.ngrok.io/projects/get-formaletas-csv?pk=30204db6-fe6c-4368-99a0-972781eb66c9" to "T:AcesJobs8b53409106af4388855f42e3c4e80f1c30204db6-fe6c-4368-99a0-972781eb66c9formaletas.csv".
Но я получаю 403 за отсутствие заголовка авторизации.
[08/12/2021 22:59:57] Error: API failed. Reason = Processing of the HTTP request resulted in an exception. Please see the HTTP response returned by the 'Response' property of this exception for details.
[08/12/2021 22:59:57] Error: Response = StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
На сервере также видно отсутствие заголовка, когда я печатаю заголовки запросов
Received headers ==> {'Host': 'e320ece2e3e5.ngrok.io', 'X-Forwarded-For': '3.212.238.83', 'X-Forwarded-Proto': 'http', 'Accept-Encoding': 'gzip'}
Forbidden: /projects/get-formaletas-csv
HTTP GET /projects/get-formaletas-csv?pk=30204db6-fe6c-4368-99a0-972781eb66c9 403 [0.00, 127.0.0.1:54139]
В документации я не вижу примеров с заголовками, любые рекомендации приветствуются. Я также хотел бы знать, как отправить более одного заголовка.
Заранее большое спасибо!
Ответ №1:
Если вы используете API автоматизации проектирования для Inventor, проект VS template для этого на самом деле содержит вспомогательную функцию для этого, поэтому вы можете назвать ее так:
var dict = new Dictionary<string, string>();
dict.Add("MyHeader-Item1", "MyHeader Value1");
dict.Add("MyHeader-Item2", "MyHeader Value2");
Autodesk.Forge.DesignAutomation.Inventor.Utils.OnDemand.HttpOperation("OnDemandParam", "", dict, "file://myfile");
Я проверил отчет о рабочем элементе, что сгенерировано, и это здесь:
!ACESAPI:acesHttpOperation(OnDemandParam,,MyHeader-Item1=MyHeader Value1;MyHeader-Item2=MyHeader Value2,,file://myfile)
Кроме того, проверьте на webhook.site, чтобы убедиться, что он работает нормально — и он работает:
Также обновлено https://forge.autodesk.com/blog/communicate-servers-inside-design-automation чтобы включить это в качестве примера.
Комментарии:
1. Я использую API автоматизации проектирования для revit, но с вашими рекомендациями я уже заставил его работать, большое вам спасибо.