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

C#服务端通过Circuit API以FormData传数组创建会话报错求助

解决C#服务端调用Circuit API创建会话时的FormData数组参数传递问题

我之前调用Circuit的这个创建群组会话API时也踩过一模一样的坑,FormUrlEncodedContent只支持单一的键值对,没办法正确传递数组类型的参数,而Circuit的API期望的是多个同名的participants参数(也就是participants=xxx&participants=xxx这种形式),而不是序列化后的字符串或者分隔符拼接的内容。

下面是经过验证可以正确工作的C#服务端代码片段:

using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;

public async Task CreateCircuitConversation()
{
    // 示例参与者数组,替换成你的实际参与者ID/邮箱
    string[] participants = { "user_id_1", "user_id_2", "user_email@domain.com" };
    string conversationTopic = "Testing1";

    using (var httpClient = new HttpClient())
    {
        // 必须添加授权头,替换成你的Circuit访问令牌
        httpClient.DefaultRequestHeaders.Authorization = 
            new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "YOUR_CIRCUIT_ACCESS_TOKEN");

        // 使用MultipartFormDataContent构造FormData请求体
        var formDataContent = new MultipartFormDataContent();

        // 为每个参与者添加独立的键值对,键名都是"participants"
        foreach (var participant in participants)
        {
            formDataContent.Add(new StringContent(participant), "participants");
        }

        // 添加会话主题参数
        formDataContent.Add(new StringContent(conversationTopic), "topic");

        // 发送POST请求
        var response = await httpClient.PostAsync(
            "https://circuitsandbox.net/rest/v2/conversations/group", 
            formDataContent);

        // 处理响应结果
        if (response.IsSuccessStatusCode)
        {
            var responseJson = await response.Content.ReadAsStringAsync();
            // 这里可以解析返回的会话信息,比如提取会话ID等
        }
        else
        {
            var errorDetails = await response.Content.ReadAsStringAsync();
            // 打印或处理错误信息,方便调试
        }
    }
}

关键说明:

  • 为什么之前的方法失败?:
    1. FormUrlEncodedContent只能处理string/string的键值对,序列化数组会被当成一个完整的字符串传递,API无法识别为数组;
    2. 用分号拼接的格式不符合Circuit API的参数解析规则;
    3. 把序列化后的数组作为单个participants值传递,同样不符合API对数组参数的预期格式。
  • 正确的姿势:使用MultipartFormDataContent,为数组中的每个元素添加一个同名的participants键值对,这样API就能正确解析出参与者数组了。
  • 别忘了替换代码中的YOUR_CIRCUIT_ACCESS_TOKEN为你的实际认证令牌,Circuit的所有API都需要有效的授权才能调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:57:35