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

.Net Core 3.1 如何实现HTTP POST请求头与请求体的分开发送

.NET Core 3.1 实现HTTP请求头与请求体分开发送的方案

直接使用官方推荐的HttpClient类实现需求,不要使用已废弃的HttpWebRequest类,后者在.NET Core中为兼容层实现,相关配置项已不生效,具体操作如下:

全局统一开启Expect 100-continue行为

  • 构造HttpClient时传入自定义配置的SocketsHttpHandler,开启Expect100Continue配置,可根据旧服务器响应速度调整超时时间:
var handler = new SocketsHttpHandler
{
    Expect100Continue = true,
    // 等待服务器返回100-continue响应的超时时间,默认1秒
    ContinueTimeout = TimeSpan.FromSeconds(3)
};
var httpClient = new HttpClient(handler);
// 后续正常发送POST请求即可,框架会自动先发送请求头,收到100-continue响应后再发送请求体

单个请求单独开启

如果不需要全局生效,可仅在指定请求的头配置中开启:

// 此处httpClient为普通构造的实例,无需特殊配置
var request = new HttpRequestMessage(HttpMethod.Post, "旧服务器接口地址")
{
    Content = new StringContent("请求体内容", Encoding.UTF8, "application/json")
    // 可替换为其他Content类型,比如FormUrlEncodedContent、MultipartFormDataContent等
};
// 单独给当前请求开启Expect 100-continue
request.Headers.ExpectContinue = true;
// 发送请求
var response = await httpClient.SendAsync(request);

注意事项

  • 若旧服务器未正确返回100-continue响应,HttpClient在等待ContinueTimeout时长后会自动发送请求体,不会永久阻塞,可根据实际情况调整超时参数避免异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:15:03