首页 > 解决方案 > .Net Core 3.1 - HTTP 请求 - 分别发送标头和正文

问题描述

我使用的是旧版服务器,它要求 HTTP POST 请求中的标头和正文分别发送。我想这是通过“期望:100-继续”实现的,它存在于旧版的客户端消息头中。

我正在使用 Net Core 3.1 编写新客户端,它似乎不支持 HttpWebRequest 类中的 Expect100Continue(根据:https ://github.com/dotnet/runtime/issues/25881 )

有没有可能用 Net Core 3.1 发送 HTTP 请求,正文和标头分开?

标签: c#.net-corehttprequest

解决方案


快速解决方案是关闭 net core 的 HTTP 处理程序

AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);

在此切换之后,将使用来自 .net 框架的处理程序。看起来 SocketsHttpHandler(至少与 HttpWebRequest 结合使用)不支持分离的标头和正文,即使使用 HTTP 1.0 也是如此。

https://docs.microsoft.com/en-us/dotnet/api/system.appcontext.setswitch?view=netcore-3.1


推荐阅读