gpt4 book ai didi

c# - xamarin 形式清除 session ios xamarin 形式

转载 作者:行者123 更新时间:2023-11-29 00:05:06 25 4
gpt4 key购买 nike

我正在尝试使用此代码清除 cookie,我不明白为什么它不起作用。

我已经尝试过这个:

if (Device.RuntimePlatform == Device.iOS)

我想我必须包括

using Foundation;

但是如果我把它放在指令部分,它会显示错误。我需要知道如何仅在 ios 上执行此代码,现在我运行它显然没有问题,但它不会清除 cookie。我不知道如何特别指向要执行的这个文件。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Net.Http;
using app_app.Helpers;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using static app_app.MainPage;
#if __IOS__
using Foundation;
using UIKit;
#endif


namespace app_app
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ActualizarDatos : ContentPage
{

private MainPage.loginInfo userInfo;


public ActualizarDatos(loginInfo userInfo)
{
InitializeComponent();
this.userInfo = userInfo;
nombre.Text = userInfo.nombre;
apellido.Text = userInfo.apellido;
email.Text = userInfo.email;
cedula.Text = userInfo.cedula;

nombreHeader.Text = userInfo.nombre + " " + userInfo.apellido;




}



private async void btnCambiar_Clicked(object sender, EventArgs e)
{
await Navigation.PushAsync(new CambiarContrasena(userInfo) { Title = "app Cambiar Contraseña" });
}


public void DeleteAllCookiesForSite()
{
#if __IOS__

NSHttpCookieStorage storage = NSHttpCookieStorage.SharedStorage;

foreach (NSHttpCookie cookie in storage.Cookies)
{
if (cookie.Domain == ".facebook.com")
{
storage.DeleteCookie(cookie);
}

}

NSUserDefaults.StandardUserDefaults.Synchronize();
#endif

}



private async void btnCerrar_Clicked(object sender, EventArgs e)
{

userInfo = null;
DeleteAllCookiesForSite();
Settings.IsLoggedIn = false;
await Navigation.PushAsync(new MainPage());

}


private async void Actualizar_Clicked(object sender, EventArgs e) {

if (string.IsNullOrEmpty(nombre.Text))
{
await DisplayAlert("Error", "Debe ingresar un nombre válido", "Aceptar");
nombre.Focus();
return;
}

if (string.IsNullOrEmpty(apellido.Text))
{
await DisplayAlert("Error", "Debe ingresar un apellido válido", "Aceptar");
apellido.Focus();
return;
}

if (string.IsNullOrEmpty(cedula.Text))
{
await DisplayAlert("Error", "Debe ingresar una cédula válida", "Aceptar");
cedula.Focus();
return;
}

if (string.IsNullOrEmpty(email.Text))
{
await DisplayAlert("Error", "Debe ingresar un email", "Aceptar");
email.Focus();
return;
}

if (proyecto.SelectedIndex == -1) {
await DisplayAlert("Error", "Debe indicar la linea de negocios de su preferencia", "Aceptar");
return;
}

/*if (adquirio_proyecto.SelectedIndex == -1)
{
await DisplayAlert("Error", "Debe indicar si ha adquirido proyectos", "Aceptar");
return;
}*/

if (recibir_notificaciones.SelectedIndex == -1)
{
await DisplayAlert("Error", "Debe indicar si desea recibir notificaciones", "Aceptar");
return;
}



btnActualizaUsuario.IsEnabled = false;



try
{

var uri = new Uri("https://www.app.com.co/app/service.php");

//await DisplayAlert("debug", userInfo.id, "Aceptar");

var formContent = new FormUrlEncodedContent(new[]{
new KeyValuePair<string, string>("id", userInfo.id),
new KeyValuePair<string, string>("nombre", nombre.Text),
new KeyValuePair<string, string>("apellido", apellido.Text),
new KeyValuePair<string, string>("cedula", cedula.Text),
new KeyValuePair<string, string>("email", email.Text),
//new KeyValuePair<string, string>("adquirio_proyecto", adquirio_proyecto.Items[adquirio_proyecto.SelectedIndex]),
new KeyValuePair<string, string>("proyecto", proyecto.Items[proyecto.SelectedIndex]),
new KeyValuePair<string, string>("recibir_notificaciones", recibir_notificaciones.Items[recibir_notificaciones.SelectedIndex]),
new KeyValuePair<string, string>("task", "actualizaUsuario")
});



var myHttpClient = new HttpClient();

myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml");
myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");

var response = await myHttpClient.PostAsync(uri.ToString(), formContent);

var stringContent = await response.Content.ReadAsStringAsync();
//await DisplayAlert("debug", stringContent, "Aceptar");
switch (stringContent)
{
case "success":
stringContent = "";
var BienV = "Sus datos han sido actualizados debes iniciar sesión para ver los cambios";
await DisplayAlert("Registro Éxitoso", BienV, "Aceptar");
userInfo = null;
await Navigation.PushAsync(new MainPage());
break;
case "failed":
var VuelveA = "Algo salio mal, intente mas tarde";
await DisplayAlert("Registro no exitoso Incorrecto", VuelveA, "Aceptar");
email.Text = string.Empty;
btnActualizaUsuario.IsEnabled = true;
stringContent = "";
break;
case "exist":
var Existe = "Su correo se encuentra registrado";
await DisplayAlert("Registro no exitoso Incorrecto", Existe, "Aceptar");
email.Text = string.Empty;
btnActualizaUsuario.IsEnabled = true;
stringContent = "";
break;
}


}
catch (Exception ex)
{

var Msj = ex.Message;
await DisplayAlert("Error", Msj, "Aceptar");
return;

}
}

}}

提前致谢

最佳答案

我使用了依赖注入(inject),所以在我的可移植项目中调用

          //required for iOS
DependencyService.Get<IPlatform>().DeleteAllCookies();

iPlatform 在哪里

public interface IPlatform
{
void DeleteAllCookies();
}

然后在我的iOS项目中的platform.cs中

internal class Platform : IPlatform
{
public void DeleteAllCookies()
{
foreach (var c in NSHttpCookieStorage.SharedStorage.Cookies)
{
NSHttpCookieStorage.SharedStorage.DeleteCookie(c);
}
}
}

而在 Android 项目中函数是空的:

    public void DeleteAllCookies()
{
}

关于c# - xamarin 形式清除 session ios xamarin 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268498/

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