我正在使用Xamarin创建一个Android应用程序,使用WebView来显示网站。用户登录网站后会创建一个Cookie,并应存储在WebView中。该应用程序中有两个WebView,一个用于显示页面,如果页面中有文本框,则在第二个WebView中打开该页面。
现在,当用户尝试登录时,将打开第二个WebView(因为登录页面包含文本框),用户输入详细信息并单击下一步按钮后,第二个视图将关闭,下一页将在第一个WebView中打开。登录后,将创建Cookie并存储在WebView中,用户下次打开应用程序时,它不会要求进行登录。这就是应该发生的事情。
问题是,如果用户输入详细信息并单击下一步按钮(下一页正在在第一个WebView中加载)然后立即退出应用程序,然后再次启动应用程序,则Cookie不存在,应用程序再次要求进行登录。
在登录后,我在WebView的页面完成事件上读取Cookie值并在Toast中显示。如果我在登录后退出应用程序,则可以在Toast中获取Cookie值,但是当我再次启动应用程序时,Cookie不再存在,它再次要求我进行登录。
现在,当用户尝试登录时,将打开第二个WebView(因为登录页面包含文本框),用户输入详细信息并单击下一步按钮后,第二个视图将关闭,下一页将在第一个WebView中打开。登录后,将创建Cookie并存储在WebView中,用户下次打开应用程序时,它不会要求进行登录。这就是应该发生的事情。
问题是,如果用户输入详细信息并单击下一步按钮(下一页正在在第一个WebView中加载)然后立即退出应用程序,然后再次启动应用程序,则Cookie不存在,应用程序再次要求进行登录。
在登录后,我在WebView的页面完成事件上读取Cookie值并在Toast中显示。如果我在登录后退出应用程序,则可以在Toast中获取Cookie值,但是当我再次启动应用程序时,Cookie不再存在,它再次要求我进行登录。
public override void OnPageFinished (WebView view, string url)
{
try
{
if (view.Url == Urls.URL_INDEX)
{
var cookieManager = CookieManager.Instance;
if (cookieManager != null)
{
//getcookie string from the url
string cookie = cookieManager.GetCookie (view.Url);
if (!string.IsNullOrEmpty (cookie))
{
string[] cookies = cookie.Split (';');
foreach (var newcookie in cookies)
{
if (newcookie.Trim().StartsWith (Constants.COOKIE_NAME))
{
string cookieValue = newcookie.Substring (newcookie.IndexOf ('='));
Toast.MakeText(activity,cookieValue,ToastLength.Short).Show();
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine ("Exception in storing cookie in Home Activity : "+ex.Message);
Toast.MakeText (activity, "Exception : " + ex.Message,ToastLength.Long).Show();
}
}
我不知道为什么会发生这种情况,请帮忙。