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

.NET中使用HttpClient调用Gmail Batch API遇400错误求助

排查.NET HttpClient调用Gmail Batch API返回400错误的问题

使用Postman调用Gmail Batch API可正常获取结果,但通过.NET的HttpClient调用时,即便access token和boundary与Postman完全一致,仍返回400 Bad Request错误,错误响应如下:

{
  "error": {
    "code": 400,
    "message": "Failed to parse batch request, error: Failed in parsing HTTP headers: (1 bytes redacted). Received batch body: (0) bytes redacted",
    "status": "INVALID_ARGUMENT"
  }
}

问题原因

错误出在手动构建multipart请求内容的方式上:MultipartContent组件会自动处理boundary分隔符和请求结构,而代码中手动添加的--stackoverflow标记、结尾的--stackoverflow--,会导致HttpClient生成的请求体出现重复的boundary结构,最终不符合Gmail Batch API的解析规则。

修正后的代码

HttpClient httpClient = new HttpClient();

var uri = "https://www.googleapis.com/batch/gmail/v1";
var access_token = "[google access token]"; // 替换为你的access token

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", access_token);
// 移除手动添加的Host头,HttpClient会自动处理

var multipartContent = new MultipartContent("mixed", "stackoverflow");

// 请求1:构建完整的HTTP请求内容
var request1Content = new StringContent(
    "GET /gmail/v1/users/me/messages/18ca8a5d1dc95d09?format=metadata HTTP/1.1\r\n\r\n",
    Encoding.UTF8,
    "application/http"
);
multipartContent.Add(request1Content);

// 请求2:构建完整的HTTP请求内容
var request2Content = new StringContent(
    "GET /gmail/v1/users/me/messages/18c94521fefc62d3?format=metadata HTTP/1.1\r\n\r\n",
    Encoding.UTF8,
    "application/http"
);
multipartContent.Add(request2Content);

var result = await httpClient.PostAsync(uri, multipartContent);

using var reader = new StreamReader(await result.Content.ReadAsStreamAsync());
var json = await reader.ReadToEndAsync();
Console.WriteLine(json);

关键修改点

  • 移除所有手动添加的boundary分隔符(--stackoverflow、--stackoverflow--),MultipartContent会自动生成正确的分隔结构
  • 每个子请求的内容需指定application/http媒体类型,且要符合HTTP请求格式(包含HTTP版本,结尾添加空行)
  • 无需手动添加Host请求头,HttpClient会自动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:25:17