c# - 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 控制台应用程序中读取这样的响应?
(服务器不在我的控制范围内)
任何想法高度赞赏!
解决方案
分隔符,如“/”,不是标题中字段名称的一部分。所以 HttpClient (和其他建立在它之上的库)会抛出一个错误。
您可以尝试其他不基于 HttpClient 的第三方库,例如RestSharp(我不确定它是否支持非标准标头,但它不是基于 HttpClient)
推荐阅读
- html - 如何将其设置为分配左 div 与屏幕的剩余大小一样多?
- flutter - 如何将csv文件保存到flutter中的内部存储下载文件夹中?
- git - git config user.name/user.email 的目的是什么?
- javascript - 如何通过两个刻度隐藏标签?图表
- ansible - 具有多个主机的 Ansible“任务逻辑”?
- javascript - 仅在登录后才能访问页面 - React
- nginx - 如何将 WWW url 重定向到 nginx 中的非 www url?
- sql - 将日期字段与oracle中的特定日期时间进行比较
- for-loop - How to remove all cloned gui in roblox
- python - 从 SQL 和 python 中的列表中选择