2016-07-23 123 views
0

我想将一些项目迁移到.Net Core,并且我有一个使用HttpWebRequest的实现。现在.Net的酷睿i设法改变的代码,但是当我检查通过提琴手原始请求我接受,Enconding是.NetCore HttpClient添加不必要的Accept-Enconding

Accept-Encoding: identity, gzip, deflate 

,而不是

Accept-Encoding: identity 

我尝试重置的头,以去除它但无论在客户端,也不要求这2头存在之前,我打电话

client.SendAsync(request); 

如果由于某种原因,这些不能被固定,由于限制是有办法创建原始HTTP请求?

回答

1

HttpClientHandler.AutomaticDecompression正在添加标题。当您关闭自动解压缩时,它会将'Accept-Encoding'标题留为空白。

var handler = new HttpClientHandler(); 
handler.AutomaticDecompression = System.Net.DecompressionMethods.None; 
var client = new HttpClient(handler); 

var result = client.GetStringAsync("http://headers.cloxy.net/request.php"); 

验证由小提琴手:

GET http://headers.cloxy.net/request.php HTTP/1.1 
Connection: Keep-Alive 
Host: headers.cloxy.net 

一个有趣的事实是,我的ISP力量通过透明代理我的流量,而且不管我的要求是怎样的Accept-Encoding: gzip总是被对方收到结束。

+0

我会接受这个答案。但我实际上抓了项目,并与Mono一起使用TCP Socket来更好地控制。 .Net Core目前在实现TCP套接字方面缺少很多。 –