为什么HttpClient GetAsync()不会在Xamarin中返回?

时间:2017-03-07 13:35:14

标签: c# xamarin get async-await dotnet-httpclient

我是Xamarin的新手,我正在尝试创建一个跨平台应用,用户可以使用JSON API调用进行登录。然后在成功登录尝试时返回令牌,我可以在其他API中使用该令牌来显示用户数据。 当我在控制台应用程序中使用相同的代码时,它可以工作,但是当我在Xamarin中运行它时,await client.GetAsync(url)之后的代码永远不会到达,一段时间后应用程序中断,我得到一个未知错误。我遇到了僵局吗?

  private async void loginButton_Click(object sender, EventArgs e)
    {
        var login = await loginAPI(LoginPage.nameEntry.Text, LoginPage.passEntry.Text);
        if (login.state == "success")
        {
            ...
        }
        else
        {
            ...
        }
    }
    public static async Task<LoginData> loginAPI(String username, String password)
    {
        try
        {
            using (var client = new HttpClient())
            {
                var loginUrl = new Uri("https://my-api/login?username=" + username + "&password=" + password);

                var result = await client.GetAsync(loginUrl);

                return JsonConvert.DeserializeObject<LoginData>(await result.Content.ReadAsStringAsync());

            }
        }
        catch (Exception e)
        {
            return null;
        }
    }
    public class LoginData
    {
        [JsonProperty("state")]
        public String state { get; set; }
        [JsonProperty("token")]
        public String token { get; set; }

    }

0 个答案:

没有答案