在c#中用httpclient调用豆包ai接口需复用httpclient实例,从环境变量读取db_api_key(格式为sk-xxx),设置bearer认证头和application/json contenttype,构造含model、messages、stream字段的openai兼容json请求体,正确处理完整或流式响应,否则易返回401/400错误。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在C#中用HttpClient调用豆包AI模型接口(如doubao.com开放平台的/v1/chat/completions),必须正确设置Authorization头、Content-Type,构造符合OpenAI兼容格式的JSON请求体,并处理流式响应或完整响应——少一步都会返回401或400错误。
准备基础配置和认证信息
打开你的C#项目,在Program.cs或服务类中声明HttpClient实例,【不要在每次请求时新建HttpClient】,复用实例避免socket耗尽。
从环境变量或配置文件读取豆包API密钥(以DB_API_KEY为键名),密钥格式为“sk-xxx”,开头必须带“sk-”前缀,否则401拒绝访问。
设置默认请求头:client.DefaultRequestHeaders.Authorization = new("Bearer", apiKey);
构造标准OpenAI兼容的请求体
创建一个名为ChatRequest的类,包含model、messages、stream三个字段,其中messages是List
model字段填"db-dq-7b"或"db-dq-32b"等豆包官方支持的模型ID,填错会返回404 Not Found;stream设为false表示获取完整响应,true则需逐块解析event-stream。
序列化请求对象为UTF-8 JSON字符串,用new StringContent(json, Encoding.UTF8, "application/json")包装,【Content-Type必须显式指定为application/json】,否则豆包后端拒绝解析。
发送POST请求并读取完整响应
方法一:同步等待响应
var response = await client.PostAsync("https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions", content);
检查response.IsSuccessStatusCode,非200时用await response.Content.ReadAsStringAsync()获取错误详情,常见错误码:401(密钥无效)、400(JSON格式错误)、429(QPS超限)。
若成功,用await response.Content.ReadFromJsonAsync
处理流式响应(stream=true)
第一步:发送请求并获取HttpContent流
var response = await client.PostAsync(url, content);
第二步:检查状态码,确保response.IsSuccessStatusCode为true
第三步:用response.Content.ReadAsStreamAsync()获取流,传入StreamReader包装,按行读取data:开头的文本块
第四步:对每行调用line.TrimStart("data: ".ToCharArray()) → 去掉前缀后JSON反序列化为DeltaChunk对象,提取delta.content拼接输出——注意data: [DONE]标识流结束,不解析该行










