【问题标题】:C# HttpClient wont add Cookies from CookieContainer to requestC# HttpClient 不会将 Cookies 从 CookieContainer 添加到请求
【发布时间】:2017-04-07 11:31:48
【问题描述】:

来自CookieContainer 的 Cookie 不会添加到 Get 或 Post 请求中。其他标题工作没有问题。添加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;
    }

日志处理程序: https://stackoverflow.com/a/18925296/3850405

【问题讨论】:

  • 您能否尝试 Cookie ctor 重载,它也接受路径作为第三个参数,然后添加“/test”作为路径,然后重试以查看是否确实呈现预期结果。如果可行,我们可以回过头来让它按照您最初希望的方式运行,

标签: c# cookies dotnet-httpclient


【解决方案1】:

由于某种原因,使用 CookieContainer 时,cookie 不在 HttpRequestMessage 标头中。如果我检查了我的 CookieContainer 对象,它们就在那里。

var cookieList = new List<Cookie>();

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

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 2011-10-14
    • 1970-01-01
    • 2013-07-02
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多