如何在UWP上使用cookie发出HTTP请求?

问题描述 投票:0回答:1

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

http cookies uwp windows-10-universal
1个回答
2
投票

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

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

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");
© www.soinside.com 2019 - 2024. All rights reserved.