如何在 UWP 上使用 cookie 发出 HTTP 请求?
How do I make an HTTP request using cookies on UWP?
我想在正确处理 cookie 的同时向远程服务器发出 http 请求(例如,存储服务器发送的 cookie,并在我发出后续请求时发送这些 cookie)。最好保留任何和所有 cookie
如果您将 HttpBaseProtocolFilter
的实例传递给其构造函数,则内置 Windows.Web.Http.HttpClient
可以管理 cookie。这个 class 然后有一个 CookieManager
属性 其中包含 cookie,您甚至可以修改它并为下一个请求添加自定义 cookie。
但是,您应该引用 System.Net.Http
NuGet 包并使用它的 HttpClient
,它始终是最新的并定期更新。在这种情况下,HttpClient
class 在其构造函数中接受一个 HttpClientHandler
实例,而此 class 又具有 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");
我想在正确处理 cookie 的同时向远程服务器发出 http 请求(例如,存储服务器发送的 cookie,并在我发出后续请求时发送这些 cookie)。最好保留任何和所有 cookie
如果您将 HttpBaseProtocolFilter
的实例传递给其构造函数,则内置 Windows.Web.Http.HttpClient
可以管理 cookie。这个 class 然后有一个 CookieManager
属性 其中包含 cookie,您甚至可以修改它并为下一个请求添加自定义 cookie。
但是,您应该引用 System.Net.Http
NuGet 包并使用它的 HttpClient
,它始终是最新的并定期更新。在这种情况下,HttpClient
class 在其构造函数中接受一个 HttpClientHandler
实例,而此 class 又具有 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");