public async Task Login() { if (!String.IsNullOrEmpty(Model.Password) && !String.IsNullOrEmpty(Model.UserName)) { MessageAndStatus response = null; LoginError = null; try { response = await _userService.LoginAsync(Model.UserName, Model.Password); LoginError = null; } catch (Exception ex) { //if (string.IsNullOrEmpty(App.Token)) LoginError = "Connection problem."; } if (response.Status == "OK" && !string.IsNullOrEmpty(response.Message)) { App.UserName = Model.UserName; App.Token = response.Message; await Navigation.PushAsync(App.Container.Resolve <ListAggregationPage>()); } else { if (!string.IsNullOrEmpty(response.Message) && response.Message != "User") { LoginError = response.Message; } else { LoginError = response.Message switch { "User" => "Bad Login or Password.", "" => "Service internal error.", _ => "Some error" }; } } } }
public async Task <MessageAndStatus> LoginAsync(string userName, string password) { var querry = new QueryBuilder(); querry.Add("userName", userName); querry.Add("password", password); var requestMessage = new HttpRequestMessage(HttpMethod.Post, "User/Login" + querry.ToString()); // await SetRequestBearerAuthorizationHeader(requestMessage); requestMessage.Content = new StringContent(""); requestMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); MessageAndStatus message = null; try { var source = new CancellationTokenSource(); _ = Task.Run(async() => { await Task.Delay(10000); source.Cancel(); }); var response = await _httpClient.SendAsync(requestMessage, source.Token); var data = await response.Content.ReadAsStringAsync(); message = JsonConvert.DeserializeObject <MessageAndStatus>(data); } catch { message = new MessageAndStatus { Status = "ERROR", Message = "Connection problem." }; } return(await Task.FromResult(message)); }