c# - 如何使用 Redis 缓存或存储 HttpClient 的状态
问题描述
我只是在想这是否可能。所以我想要做的是当我访问我的网站并尝试使用 HttpClient 以编程方式登录它时。有没有办法保存会话或 HttpClient 的状态,以便我可以检查它是否有会话并避免一遍又一遍地登录?
我正在尝试存储 cookie 并使用它们,但仍然无法正常工作。
这是我的代码
private static List<Cookie> _cookies = new List<Cookie>();
bool isAuthenticated = false;
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var httpClient = new HttpClient(handler))
{
httpClient.BaseAddress = new Uri("https://my.website.url/");
if (_cookies.Any())
{
_cookies.ForEach(cookie =>
{
cookieContainer.Add(httpClient.BaseAddress, cookie);
});
isAuthenticated = true;
}
if (!isAuthenticated)
{
var checkCookie = await NavigateToCentralLogin(httpClient);
if (!checkCookie.Contains("WELCOME"))
{
var loginBody = await Login(httpClient, USERNAME, PASSWORD);
cookies = cookieContainer.GetCookies(httpClient.BaseAddress).Cast<Cookie>();
_cookies.AddRange(cookies.ToList());
}
}
var centralLoginbody = await NavigateToCentralLogin(httpClient);
var accountListBody = await NavigateToViewAccountList(httpClient, centralLoginbody);
}
解决方案
推荐阅读
- r - 用于引导 ChiSq 中值估计的 R 代码检查
- java - 使用 GridBagLayout 和 JScrollPane 创建 Instagram 类型的提要
- mysql - 在状态的发布请求中发送日期始终返回 NULL
- python - 使用给定的输入列表对 DataFrame 列进行排序
- powerbi - 如何在 power bi visuals 中显示当前日期和时间?
- angularjs - 使用搜索框导航到其他状态
- django - 如何自定义 django 管理员
- jelastic - Jelastic GC 代理是否为新创建的“Java 引擎”环境自动启用?
- javascript - 如何通过js重新触发animationTransform?
- image - 如何对下载时会损坏的图像进行“锁定”?