http - 如何在 UWP 上使用 cookie 发出 HTTP 请求?
问题描述
我想在正确处理 cookie 的同时向远程服务器发出 http 请求(例如,存储服务器发送的 cookie,并在我发出后续请求时发送这些 cookie)。保留所有cookies会很好
解决方案
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");
推荐阅读
- java - 调用虚拟方法 double android.location.Location.getLatitude
- elasticsearch - Elasticsearch query_string 过滤器在非空字符串时使用字段
- python - 如何计算组中的记录数并将它们保存在 csv 文件中?
- python - Fabric3 连接到没有密码的服务器
- ansible - 未安装作曲家 - ansible
- git - 搞砸了我的 git repo,不知道如何正确同步
- java - 如何进行这些类型的字符串模式匹配
- c# - 我可以在用户之间发送数据库吗?
- javascript - HTML:防止在某些标点符号前面有空格之前换行
- python-3.x - PyQt5 ImportError:DLL 加载失败