![](/img/trans.png)
[英]Autodesk.DesignAutomation returning Unexpected token S in JSON at position 0 when calling the workitem api
[英]How to get WorkItem Id when receiving the result?
假設我使用以下代碼將工作項發布到 Revit 引擎
var response = await _flurlClient.Request("https://developer.api.autodesk.com/da/us-east/v3/workitems")
.PostJsonAsync(new
{
activityId = "ActivityID",
arguments = new
{
rvtFile = new
{
url = storageUrl,
Headers = new
{
Authorization = $"Bearer {accessToken}"
}
},
result = new
{
verb = "post",
url = $"{baseUrl}/api/result"
}
}
})
.ReceiveJson();
響應將包含此工作項的 Id。 一旦工作項成功完成,Forge 將使用 output 文件調用我的 API 端點。 我的端點實現如下:
[HttpPost("Result")]
public async Task<IActionResult> PostResults()
{
await using (var fs = new FileStream("D://Test//l2.xlsx", FileMode.Create))
{
await Request.Body.CopyToAsync(fs);
}
return Ok();
}
該文件已正確保存,但我無法獲取關聯的工作項 ID(既不是查詢參數也不是標題)。 這會導致一個問題,假設我在收到文件時提交了兩個工作項(A 和 B),我如何判斷它是與工作項 A 還是 B 相關。
見答案。
設計自動化允許您在 output url 中指定變量workitem.id
。 當您的工作項完成時,我們將調用此 url 並將變量擴展為該工作項的 id。 此動態變量路徑允許您確定與該回調關聯的工作項 ID。
最后,您將需要實現Attribute Routing 。
[HttpPost("Result/{workitemId}")]
public async Task<IActionResult> PostResults(string workitemId)
{
}
您可以通過以下方式發布工作項:
result = new
{
verb = "post",
url = $"{baseUrl}/api/result/$(workitem.id)"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.