【发布时间】:2021-07-28 15:40:15
【问题描述】:
我需要向网站发出一个简单的 GET 请求并解析响应。
我打算使用下面的简单代码
var httpClient =_httpClientFactory.CreateClient();
var initialRequest = await httpClient.GetAsync(_config.WebsiteUrl, cancellationToken);
但是,该站点制作不当,并在其响应中发送了无效标头,即“X=Frame-Options”,导致以下异常。
System.Net.Http.HttpRequestException: Received an invalid header name: 'X=Frame-Options'.
很遗憾,我无法控制该网站,而且这个问题不太可能很快得到解决。因此需要一种解决方法。
我的想法是创建一个本地“中间人”,可以这么说,它会在到达我的代码之前拦截从站点发送的响应,删除有问题的标头,然后传递响应。
我不熟悉 C# 中的网络,我想知道这个用例是否有任何好的库或现有示例。
我尝试过使用 Flurl 库,但不幸的是,它在实现中使用了 httpclient,所以仍然会抛出异常。
或者我是否遗漏了一些明显的东西,并且有某种方法可以禁用引发上述异常的标头验证?
【问题讨论】:
-
this 看起来有用吗?
-
嗨@gunr2171!我确实看到了这个问题,并且确实尝试过,但问题是它仍然使用 HTTP 客户端类的 SendAsync 方法,导致抛出相同的异常。请参阅该线程中的 David Norvall 的回复。不过谢谢!
标签: c# http httpclient