APS API WorkItem大JSON payload发送及C#端获取示例咨询
在APS API的WorkItem中发送大JSON Payload及C#端获取示例
一、发送大JSON Payload到WorkItem
当JSON payload体积较大时,若直接放入请求体易触发大小限制或超时,推荐使用APS API的X-ADS-Payload-Url请求头指定可被APS服务访问的JSON文件外部URL;若需直接发送,需确保请求头Content-Type设为application/json,且payload符合WorkItem结构要求。
直接发送大JSON的HTTP请求示例
POST /v3/workitems HTTP/1.1 Host: developer.api.autodesk.com Authorization: Bearer YOUR_ACCESS_TOKEN Content-Type: application/json Content-Length: [YOUR_JSON_SIZE] { "title": "大JSON处理任务", "payload": { "largeDataset": [ // 批量数据条目 ], "taskConfig": { "param1": "value1", "param2": "value2" } }, "status": "active", "workflowId": "YOUR_WORKFLOW_ID" }
C#发送大JSON的代码示例
using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; public async Task CreateLargePayloadWorkItem() { var accessToken = "YOUR_ACCESS_TOKEN"; var workflowId = "YOUR_WORKFLOW_ID"; // 模拟大JSON payload,实际场景可从本地文件/存储读取 var largePayload = new { title = "大JSON处理任务", payload = new { largeDataset = new object[10000], taskConfig = new { param1 = "value1", param2 = "value2" } }, status = "active", workflowId = workflowId }; using var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken); var jsonContent = new StringContent( JsonConvert.SerializeObject(largePayload), Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync( "https://developer.api.autodesk.com/v3/workitems", jsonContent); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAsStringAsync(); Console.WriteLine("WorkItem创建成功: " + result); }
二、C#端获取WorkItem中的JSON数据
调用APS API的WorkItem详情接口获取任务信息,解析payload字段即可提取目标JSON数据。
C#获取并解析的代码示例
using System; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json.Linq; public async Task RetrieveWorkItemPayload(string workItemId) { var accessToken = "YOUR_ACCESS_TOKEN"; using var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken); var response = await httpClient.GetAsync( $"https://developer.api.autodesk.com/v3/workitems/{workItemId}"); response.EnsureSuccessStatusCode(); var workItemJson = await response.Content.ReadAsStringAsync(); // 解析JSON提取payload var workItemObj = JObject.Parse(workItemJson); var payload = workItemObj["payload"]; // 直接输出或转为强类型对象处理 Console.WriteLine("提取的Payload内容: " + payload.ToString()); // 转为强类型示例(需根据你的JSON结构定义模型) // var payloadModel = payload.ToObject<CustomPayloadModel>(); } // 自定义Payload模型示例 public class CustomPayloadModel { public object[] LargeDataset { get; set; } public TaskConfig TaskConfig { get; set; } } public class TaskConfig { public string Param1 { get; set; } public string Param2 { get; set; } }
注意事项
- 确保APS访问令牌拥有
data:write和data:read权限 - 当JSON payload超过10MB时,优先使用
X-ADS-Payload-Url方式规避请求大小限制 - 处理超大JSON时建议使用流式读写,避免内存占用过高
内容的提问来源于stack exchange,提问作者Joseph Tenenbaum
相关产品推荐
相关产品推荐

