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

Autodesk Forge调用[GET]/activities/:id获取指定活动返回400错误如何解决

问题原因

  1. .NET平台默认的URI解析逻辑会自动将路径段中已编码的%2b解码为+,而Forge Design Automation接口对路径参数中的+字符校验严格,会将未编码的+识别为非法字符,直接返回400错误。
  2. 带+$LATEST后缀的活动ID属于动态版本别名,接口对这类ID的编码要求比固定版本号ID更高,这也是其他不带该后缀的活动可以正常查询的核心原因。

解决方案

针对C#开发环境,可以通过以下方法解决:

  • 禁用.NET的URI自动解码规则
    在程序初始化阶段添加全局配置,关闭路径自动解码功能:
// 适用于.NET Framework 4.5+及.NET Core 2.0+
AppContext.SetSwitch("System.Uri.DisableBackslashEncoding", true);
AppContext.SetSwitch("System.Uri.DontEnableStrictRFC3986ReservedCharacterSets", true);
  • 手动构造请求地址跳过自动编码
    不要通过Uri类自动处理路径,直接将手动编码后的活动ID拼接到请求地址中:
// 对活动ID进行RFC3986标准编码
var rawActivityId = "GZZQabcdefghijklmnopqrNroJTafTze.DeleteWallsActivity+$LATEST";
var encodedActivityId = Uri.EscapeDataString(rawActivityId);
var requestUrl = "https://developer.api.autodesk.com/da/us-east/v3/activities/" + encodedActivityId;

// 使用HttpClient发送请求示例
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "你的访问令牌");
var response = await client.GetAsync(requestUrl);
  • 临时验证方案
    可以先将+$LATEST替换为该活动对应的固定版本号(例如+1、+2,可从活动列表接口的返回结果中查询到),验证接口可正常返回后再调整编码逻辑。

内容的提问来源于stack exchange,提问作者Bertil de Groot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:27:02