2017-04-07 36 views
0

来自CookieContainer的Cookie不会添加到获取或发布请求中。其他头文件没有问题。什么是添加cookie的正确方法?我以前做过这个没有问题,但我找不到这里的错误。C#HttpClient不会添加来自CookieContainer的Cookie以请求

var cookieContainer = new CookieContainer(); 

var handler = new HttpClientHandler(); 
handler.AllowAutoRedirect = true; 
handler.UseCookies = true; 
handler.CookieContainer = cookieContainer; 

var baseAddress = new Uri("https://www.example.se"); 
cookieContainer.Add(baseAddress, new Cookie("Testing", "Test"));  
//This did not work either 
//cookieContainer.Add(baseAddress, new Cookie("Testing", "Test", "/"));  

using (var client = new HttpClient(new LoggingHandler(handler))) 
    { 
     client.BaseAddress = baseAddress; 
     client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"); 
     client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 
     client.DefaultRequestHeaders.Add("Accept-Language", "sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4"); 

     var getResponse = client.GetAsync("/test").Result; 

     string responseString = getResponse.Content.ReadAsStringAsync().Result; 
    } 

LoggingHandler:使用CookieContainerhttps://stackoverflow.com/a/18925296/3850405

enter image description here

+0

您可以尝试Cookie ctor重载,该重载也接受路径作为第三个参数,然后将“/ test”添加为路径,然后重试以查看是否确实呈现了预期结果。如果有效,我们可以回头让它工作在你最初希望的状态, – rene

回答

0

出于某种原因,饼干并不在HttpRequestMessage头。如果我检查了我的CookieContainer对象,但他们在那里。

var cookieList = new List<Cookie>(); 

foreach (Cookie cookie in cookieContainer.GetCookies(baseAddress)) 
{ 
    cookieList.Add(cookie); 
} 
0

你看这个答案,并手动添加cookie来的头? https://stackoverflow.com/a/13287224/7763903

+0

这应该是对问题的评论,而不是自己的答案,问题已经有十个月了,所以OP可能不是更长的搜索解决方案 –

+0

@NicoHaase我同意,但是,我没有声望点评论发布呢。看来,除非他们是我自己的。 –

+0

只要我能够获得足够的声望点,我会回来删除此答案并将其作为评论发布。 –