【问题标题】:How do I make an HTTP request using cookies on UWP?如何在 UWP 上使用 cookie 发出 HTTP 请求?
【发布时间】:2019-02-15 21:16:54
【问题描述】:

我想在正确处理 cookie 的同时向远程服务器发出 http 请求(例如,存储服务器发送的 cookie,并在我发出后续请求时发送这些 cookie)。最好保留所有 cookie

【问题讨论】:

    标签: http cookies uwp windows-10-universal


    【解决方案1】:

    如果您将HttpBaseProtocolFilter 的实例传递给其构造函数,则内置的Windows.Web.Http.HttpClient 可以管理cookie。然后这个类有一个 CookieManager 属性,其中包含 cookie,您甚至可以修改它并为下一个请求添加自定义 cookie。

    但是,您应该改为引用System.Net.Http NuGet 包并使用它的HttpClient,它始终是最新的并定期更新。在这种情况下,HttpClient 类在其构造函数中接受 HttpClientHandler 实例,而此类又具有 CookieContainer 属性,其工作方式与 Windows.Web.Http 中的 CookieManager 类似。

    System.Net.Http.HttpClient

    发送自定义 cookie

    var handler = new HttpClientHandler()
    {
        CookieContainer = new System.Net.CookieContainer(),
        UseCookies = true
    };
    var client = new System.Net.Http.HttpClient(handler);
    handler.CookieContainer.Add(targetUri, new System.Net.Cookie("name", "value"));
    var response = await client.GetAsync(targetUri);
    

    检索 cookie

    var cookie = handler.CookieContainer["name"];
    

    Windows.Web.Http.HttpClient

    发送自定义 cookie

    var filter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter()
    {
        CookieUsageBehavior = Windows.Web.Http.Filters.HttpCookieUsageBehavior.Default
    };
    filter.CookieManager.SetCookie(new Windows.Web.Http.HttpCookie("name", "domain", "path")
    {
        Value = "value"
    });
    var client =  new Windows.Web.Http.HttpClient(filter);
    var response = await client.GetAsync(targetUri);
    

    检索 cookie

    var cookie = filter.CookieManager.GetCookies(targetUri).
                  FirstOrDefault(cookie => cookie.Name == "name");
    

    【讨论】:

    • 如果您可以在 post 请求中添加代码块,那将非常有帮助。谢谢
    • 哦,我一定会的,等我回家
    • 哦抱歉,完全忘记了?。我会尽快更新帖子
    • 好的,我已经为这两种情况添加了样本
    猜你喜欢
    • 2019-02-13
    • 2010-10-15
    • 2020-09-13
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多