.net 由于ProtocolViolationException,无法使用带有HttpClient的正文的HTTP Get

.net 由于ProtocolViolationException,无法使用带有HttpClient的正文的HTTP Get,.net,http,dotnet-httpclient,.net,Http,Dotnet Httpclient,我知道为什么不建议在正文中使用Http Get,请参阅: 但我有一个第三方服务,它本质上是一个MongoDB PAAS,它允许您通过发送一个HTTP GET with body进行查询(filter子句在HTTP body中)。它不支持通过HTTP POST进行相同的查询。HTTP GET with body with HttpClient当前提供ProtocolViolationException,该异常抱怨错误的动词 依我拙见,HttpClient应该阻止非标准使用(类似于在没有验证的情况

我知道为什么不建议在正文中使用Http Get,请参阅:

但我有一个第三方服务,它本质上是一个MongoDB PAAS,它允许您通过发送一个HTTP GET with body进行查询(filter子句在HTTP body中)。它不支持通过HTTP POST进行相同的查询。HTTP GET with body with HttpClient当前提供ProtocolViolationException,该异常抱怨错误的动词

依我拙见,HttpClient应该阻止非标准使用(类似于在没有验证的情况下通过
tryadd添加某些标题),但不要让它们完全不可能。世界毕竟不是完美的。HttpClient现在只是挡了我的路,PAAS提供商当然不会改变他们的API来适应我的http客户端

我在SO中阅读了大量相关问题,许多答案都在谈论为什么HTTP与身体接触是不好的,而你永远不应该这样做。然而,我无法控制我的情况


如何使用
System.Net.Http.HttpClient
解决此问题?

您是否尝试过类似System.Net.WebRequest或System.Net.WebClient的遗留.Net api?没有。我没有。我想它可能在那里工作,但我不太熟悉点网络世界中较老的http客户机。但由于HttpClient现在是微软的推荐产品,我更喜欢HttpClient解决方案。您是否尝试过System.NET.WebRequest或System.NET.WebClient之类的遗留.NET api?没有。我没有。我想它可能在那里工作,但我不太熟悉点网络世界中较老的http客户机。但由于HttpClient现在是微软的推荐产品,我更喜欢HttpClient解决方案。