You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于用C# .NET实现ACC表单提交及PATCH接口的技术咨询

ACC Build模块表单操作的C# .NET实现方案

1. Autodesk官方.NET NuGet包说明

  • 官方提供的Autodesk.Forge NuGet包可用于对接Autodesk平台API,但没有直接封装ACC Build模块表单相关的特定方法(如表单提交、PATCH更新)。你需要通过该包获取认证Token后,结合HttpClient手动调用ACC的表单API接口。
  • 安装命令:Install-Package Autodesk.Forge(或在NuGet包管理器中搜索安装)

2. CURL转C#代码示例

PATCH更新表单(forms/:formid)

假设已获取有效的ACC认证Token,以下是对应的C#实现(基于HttpClient和Newtonsoft.Json):

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using Newtonsoft.Json;

public class AccFormUpdateService
{
    public static async Task UpdateFormAsync(string accessToken, string formId)
    {
        var baseUrl = "https://developer.api.autodesk.com/acc/v1";
        var updateData = new
        {
            title = "更新后的表单标题",
            description = "更新后的表单描述"
            // 其他需更新字段请参考ACC API文档定义
        };

        var jsonPayload = JsonConvert.SerializeObject(updateData);
        using var client = new HttpClient();

        // 设置请求头
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
        var response = await client.PatchAsync($"{baseUrl}/forms/{formId}", content);

        // 处理响应
        if (response.IsSuccessStatusCode)
        {
            var result = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"表单更新成功:{result}");
        }
        else
        {
            var error = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"更新失败,状态码:{(int)response.StatusCode}\n错误信息:{error}");
        }
    }
}

表单提交(POST创建表单)

如果是提交新表单,代码结构类似,仅请求方法和请求体调整:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using Newtonsoft.Json;

public class AccFormSubmitService
{
    public static async Task SubmitFormAsync(string accessToken, string projectId, string templateId)
    {
        var baseUrl = "https://developer.api.autodesk.com/acc/v1";
        var submitData = new
        {
            project_id = projectId,
            title = "新提交的表单标题",
            description = "表单描述",
            form_template_id = templateId,
            fields = new[]
            {
                new { id = "field_1", value = "填写的字段值1" },
                new { id = "field_2", value = "填写的字段值2" }
            }
            // 其他必填字段请参考ACC API文档定义
        };

        var jsonPayload = JsonConvert.SerializeObject(submitData);
        using var client = new HttpClient();

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
        var response = await client.PostAsync($"{baseUrl}/forms", content);

        if (response.IsSuccessStatusCode)
        {
            var result = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"表单提交成功:{result}");
        }
        else
        {
            var error = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"提交失败,状态码:{(int)response.StatusCode}\n错误信息:{error}");
        }
    }
}

关键注意事项

  • 确保认证Token拥有ACC Build模块的对应权限(如data:write、data:read),否则会返回权限错误。
  • 请求体字段必须严格匹配ACC API文档的定义,缺失必填字段或格式错误会导致请求失败。
  • 异步方法调用时需使用await关键字,避免阻塞主线程。

内容的提问来源于stack exchange,提问作者kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:55:16