在我的WebAPI控制器之一,我倒要看看这是由客户端(如东西,你可以在http://web-sniffer.net/看到)发送的原生HTTP请求:C#的WebAPI - 获取完整的HTTP请求
POST/HTTP/1.1
Host: www.some.host.tld
Connection: keep-alive
Accept-Encoding: gzip[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7
field1=FIELD1&field2=FIELD2
Content-type: application/x-www-form-urlencoded
[...]
我该怎么做? Request
和RequestContext
都不包含这些数据,但我没有找到任何其他资源来查询此内容。
我试着在SO上搜索类似的问题,但只发现了Java的原始内容或(如果是完整的html)的问题。
在我的脑海里,我有一个关于这个与FilterConfig.cs
相结合的小内存,但遗憾的是没有足够的具体内容。幸运的是,有人比我更懂得知道直接获取这些信息的方法。
编辑:
看来,这是不可能直接采集原始的HTTP请求。在阅读链接的答案之后,我似乎必须从几个字段重建请求。
据他回答杰夫的评论的链接,我必须重建从一堆解析领域的原始请求:为起始行
HttpContext.Current.Request.HttpMethod
+.Url
+.ServerVariables["SERVER_PROTOCOL"]
。HttpContext.Current.Request.ServerVariables["ALL_RAW"]
为标题Request.Content.ReadAsStreamAsync().Result
(不要忘记寻求读之前位置0)的内容
这1行将解决您的问题var data = Request.Headers; –
@DanEsparza你链接到的答案(14967457)不起作用。杰夫戴维斯在他的回答(1038466)中提出的答案使我走上了正确的轨道。请删除或编辑您的重复标记,以免读者在阅读本文时误导他人错误地回答(对我的问题)。 – MilConDoin