gpt4 book ai didi

c# - 在 Xamarin 中将 cookie 放在 WebView 上

转载 作者:行者123 更新时间:2023-11-30 14:47:59 25 4
gpt4 key购买 nike

我的 Xamarin 项目中有以下计划:

  • 用户在主页上输入用户名和密码。
  • 如果数据正确(API 存在),导航到 WebView 并在此页面上自动登录用户。

现有 API(非公开)提供 System.Net.CookieCollection。

如何使用带有这些 cookie 的 POST 请求来实现我的想法?这是我的基地:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class WebPage : ContentPage
{
public WebPage(string url, CookieCollection cookies)
{
InitializeComponent();
BindingContext = new MainPageViewModel();
MyWebView.Source = "https://" + url;

}
}

亲切的问候,localhorst27

最佳答案

您必须为 Android 和 iOS 上的 WebView 创建一个自定义渲染器。这样您就可以将 cookie 注入(inject)到 Android WebView 和 iOS UIWebView 中。如果您不熟悉它们,请从这里开始:Introduction to Custom Renderers

当您熟悉渲染器的工作原理后,请关注 Christine Blanda 发表的这篇文章在 Xamarin 论坛上:Setting Cookies in a WebView

我还将在此处发布代码,以确保它得到保留,以防原始帖子失效。

Android OnElementChanged

var cookieManager = CookieManager.Instance;
cookieManager.SetAcceptCookie(true);
cookieManager.RemoveAllCookie();
var cookies = UserInfo.CookieContainer.GetCookies(new System.Uri(AppInfo.URL_BASE));
for (var i = 0; i < cookies.Count; i++)
{
string cookieValue = cookies[i].Value;
string cookieDomain = cookies[i].Domain;
string cookieName = cookies[i].Name;
cookieManager.SetCookie(cookieDomain, cookieName + "=" + cookieValue);
}

iOS OnElementChanged

// Set cookies here
var cookieUrl = new Uri(AppInfo.URL_BASE);
var cookieJar = NSHttpCookieStorage.SharedStorage;
cookieJar.AcceptPolicy = NSHttpCookieAcceptPolicy.Always;
foreach (var aCookie in cookieJar.Cookies)
{
cookieJar.DeleteCookie(aCookie);
}

var jCookies = UserInfo.CookieContainer.GetCookies(cookieUrl);
IList<NSHttpCookie> eCookies =
(from object jCookie in jCookies
where jCookie != null
select (Cookie) jCookie
into netCookie select new NSHttpCookie(netCookie)).ToList();
cookieJar.SetCookies(eCookies.ToArray(), cookieUrl, cookieUrl);

关于c# - 在 Xamarin 中将 cookie 放在 WebView 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42853636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com