首页 > 解决方案 > C#响应中的非标准标头导致异常

问题描述

我必须能够为这样的响应发送 HTTP 请求:

HTTP/1.0 200 OK
/bin/sh: check_updatelock: not found
Cache-Control: no-cache, must-revalidate
Expires: ...
Content-Type: application/json

{"response": "..."}

现在这里/bin/sh导致异常:Received an invalid header name: '/bin/sh'(at System.Net.Http.HttpConnection.ParseHeaderNameValue)。
我已经尝试过使用HttpClient, WebClient, HttpWebRequest,甚至使用名为 的 3rd 方库Flurl,但它HttpClient在引擎盖下使用。
结果总是相同的期望。
即使在 PowerShell 中Invoke-WebRequest,也有一个例外:The server committed a protocol violation. Section=ResponseHeader Detail=Header name is invalid

我如何从 C# .NET Core 控制台应用程序中读取这样的响应?
(服务器不在我的控制范围内)

任何想法高度赞赏!

标签: c#http.net-corehttp-headershttpclient

解决方案


分隔符,如“/”,不是标题中字段名称的一部分。所以 HttpClient (和其他建立在它之上的库)会抛出一个错误。

您可以尝试其他不基于 HttpClient 的第三方库,例如RestSharp(我不确定它是否支持非标准标头,但它不是基于 HttpClient)


推荐阅读