Я довольно новичок в xamarin , и я пытаюсь использовать эту техно с веб-сервисом .
На данный момент у меня есть страница входа , которая спрашивает мой веб-сервис, может ли пользователь войти в систему.
Для этого моя кнопка входа в систему использует переносимый класс, который вызывает веб-сервис .
Я размещал веб-службу на веб-сервере (IIS) .
Так что я использую удаленный IP для использования моего веб-сервиса
Я искал решения в течение нескольких часов, проблема остается прежней.
Если кто-то может мне помочь, было бы неплохо, не забудьте сказать мне, если вам нужна дополнительная информация!
Факты:
-Подключение возвращает правильный результат при использовании wcftestclient.exe
-Соединение возвращает мне хороший результат, когда я использую UWP
-При отладке моего телефона Android появляется ошибка авторизации.
(Вы можете найти ниже код каждого компонента и сообщение об ошибке)
Сообщение об ошибке
<ч />
PageLogin.xaml.cs
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class PageLogin : ContentPage
{
public PageLogin ()
{
InitializeComponent ();
this.btnLogin.Clicked += BtnLogin_Clicked;
}
private void BtnLogin_Clicked(object sender, EventArgs e)
{
BOWCF.Classes.WebService service = new BOWCF.Classes.WebService();
service.Logged += Service_Logged;
service.Login(this.txtId.Text, this.txtPassword.Text);
}
private void Service_Logged(object sender, BOWCF.Models.User e)
{
if (e.Enabled)
{
Classes.Security.CurrentUser = e;
Application.Current.MainPage = new Pages.PageMain();
}
else
{
DisplayAlert("TPTFS03", "Connexion Failed", "Ok");
}
}
}
<Ч />
BOWCF.Classes.WebService
public event EventHandler<Models.User> Logged;
public void Login(string username, string password)
{
try
{
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("http://XXXX.XXXX.XXXX.XXXX:XXXX/ServiceTPTFS03.svc");
SvcTPTFS03.ServiceTPTFS03Client client = new SvcTPTFS03.ServiceTPTFS03Client();
client.LoginCompleted += Client_LoginCompleted;
client.LoginAsync(username, password);
}
catch (Exception ex)
{
Logged?.Invoke(null, new Models.User());
}
}
private void Client_LoginCompleted(object sender, SvcTPTFS03.LoginCompletedEventArgs e)
{
Models.User user = Models.User.Empty;
try
{
if (e.Result != null)
{
user = new Models.User()
{
Uid = e.Result.Uid,
NameLast = e.Result.NameLast,
NameFirst = e.Result.NameFirst,
Login = e.Result.Login,
Password = e.Result.Password,
Enabled = e.Result.Enabled
};
Logged?.Invoke(null, user);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
IServiceTPTFS03.CS
[ServiceContract]
public interface IServiceTPTFS03
{
[OperationContract]
User Login(string login, string password);
}
[DataContract]
public class User
{
[DataMember]
public Guid Uid { get; set; } = Guid.Empty;
[DataMember]
public string NameLast { get; set; } = string.Empty;
[DataMember]
public string NameFirst { get; set; } = string.Empty;
[DataMember]
public string Login { get; set; } = string.Empty;
[DataMember]
public string Password { get; set; } = string.Empty;
[DataMember]
public bool Enabled { get; set; } = false;
}
ServiceTPTFS03.svc.cs
public class ServiceTPTFS03 : IServiceTPTFS03
{
public User Login(string login, string password)
{
User user = new User();
if (login == "dreau.valerie@swiss-bourdin.com"
&& password == "1234")
{
user.Uid = Guid.Parse("AECB05C7-8003-4685-98CD-658761DC7C53");
user.NameLast = "Dreau";
user.NameFirst = "Valerie";
user.Login = "dreau.valerie@swiss-bourdin.com";
user.Password = "1234";
user.Enabled = true;
}
return user;
}
}