zoukankan      html  css  js  c++  java
  • C# HttpClient设置cookies的两种办法 (转发)

    一般有两种办法

    第一种handler.UseCookies=true(默认为true),默认的会自己带上cookies,例如

    复制代码
    var handler = new HttpClientHandler() { UseCookies = true };
    var client = new HttpClient(handler);// { BaseAddress = baseAddress };
    client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0");
    client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
    client.DefaultRequestHeaders.Add("Keep-Alive", "timeout=600");
    var content = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair<string, string>("email", "xxxx"),
                    new KeyValuePair<string, string>("password", "xxxx"),
                });
    var result = await client.PostAsync("https://www.xxxx.com/cp/login", content);
    result.EnsureSuccessStatusCode();
    复制代码

    这种情况post请求登陆成功后,重定向到别的页面,也会自动带上cookies。如果把handler.UseCookies设置为false,登陆后重定向的话不会自动带上cookies,则又会跳转到登陆页面。

    第二种设置 handler.UseCookies = false时,则需要手动给headers上加入cookies.

    复制代码
    var handler = new HttpClientHandler() { UseCookies = false};
    var client = new HttpClient(handler);// { BaseAddress = baseAddress };
    var message = new HttpRequestMessage(HttpMethod.Get, url);
    message.Headers.Add("Cookie", "session_id=7258abbd1544b6c530a9f406d3e600239bd788fb");
    var result = await client.SendAsync(message);
    result.EnsureSuccessStatusCode();
    复制代码

    如果使用场景是:抓取需要登陆后才能看到的网页数据,建议使用第一种,不需要设置任何cookies,httpclient会自动把登陆后的cookies放置到后面的请求中。

    原贴 : http://www.cnblogs.com/xiaozhu39505/p/8033108.html

  • 相关阅读:
    poj 1840(五元三次方程组)
    Selenium(二)开发环境的搭建
    Selenium(一)自动化测试简介
    (二)AppScan使用教程
    (一)AppScan的安装及破解
    (一)python3.7的安装
    读完《大道至简》后的反思
    BZOJ3585: mex
    BZOJ3544: [ONTAK2010]Creative Accounting
    BZOJ3531: [Sdoi2014]旅行
  • 原文地址:https://www.cnblogs.com/refuge/p/8060142.html
Copyright © 2011-2022 走看看