首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# HttpClient -如果请求头中的UseCookies设置为false,是否可以从响应中获取cookies?

问C# HttpClient -如果请求头中的UseCookies设置为false,是否可以从响应中获取cookies?
EN

Stack Overflow用户
提问于 2020-10-12 20:16:42
回答 1查看 75关注 0票数 0

我知道您可以通过在请求处理程序中添加一个CookieContainer来获取cookie。

但是,除非我将UseCookies设置为false,否则以下post请求将失败:

代码语言:javascript
复制
static CookieContainer cookies = new CookieContainer();    

  var clientHandler = new HttpClientHandler
    {
       //Original Apporach - this fails the POST request 
       // UseCookies = true,
       // CookieContainer = cookies,

       //I had to do this
        UseCookies = false,
    };
    var client = new HttpClient(clientHandler);
    var request = new HttpRequestMessage
    {
        Method = HttpMethod.Post,
        RequestUri = new Uri("*redacted*"),
        Headers =
        {
            { "cookie", "SampleCookie" },
        },
        Content = new FormUrlEncodedContent(new Dictionary<string, string>
        {
            { "Provider", "Email" },
            { "Code", "12345" },
            { "RememberMe", "False" },
            { "RememberBrowser", "false" },
            { "__RequestVerificationToken", "SampleToken" },
        }),
    };
    using (var response = await client.SendAsync(request))
    {
        response.EnsureSuccessStatusCode();
        var body = await response.Content.ReadAsStringAsync();
        Console.WriteLine(body);
    }

老实说,对HTTP请求不是很了解。我原来的方法是不是因为我手动设置cookie而失败了?

EN

回答 1

Stack Overflow用户

发布于 2020-10-12 21:28:44

请求失败的原因可能取决于许多因素--比如身份验证和所需的其他头部,如果不知道您试图访问的具体内容,就很难判断是什么导致了请求失败。这里有一个简单的例子,展示了如何向Google首页发出请求,并将所有cookie放入容器中,并在控制台应用程序中打印出来:

代码语言:javascript
复制
static void Main(string[] args)
{
    var uri = new Uri("https://google.com");
    var cookies = new CookieContainer();
    var handler = new HttpClientHandler();
    handler.CookieContainer = cookies;

    using (var client = new HttpClient(handler))
    {
        var result = client.GetAsync(uri).Result;
    }

    foreach (Cookie cookie in cookies.GetCookies(uri))
    {
        var print = $"cookie name: {cookie.Name}\ncookie value: {cookie.Value}\n";
        Console.WriteLine(print);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64317723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档