【问题标题】:timeout exception in Xamarin.Forms System.Net.WebException: <Timeout exceeded getting exception details>Xamarin.Forms System.Net.WebException 中的超时异常:<超时获取异常详细信息>
【发布时间】:2019-05-09 12:08:27
【问题描述】:

我正在尝试通过调用 api 在 Xamarin 应用程序中显示登录消息...但它显示了

未处理的异常:

System.Net.WebException: 发生了

在这一行行

var response =await httpClient.GetStringAsync("http://localhost:40987/Api/Home/Post?username="+username.Text+"&password="+password.Text);

我已经尝试了所有的建议,但没有摆脱这个

    private async void Button_ClickedAsync(object sender, EventArgs e)
    {
        User user = new User
        {
            UserName = username.Text,
            Password = password.Text

        };


        var Json = Newtonsoft.Json.JsonConvert.SerializeObject(user);
        HttpContent httpContent = new StringContent(Json);
        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/Json");
        var httpClient = new HttpClient();
        //httpClient.GetAsync("windows.digitalgramsoft.com/Api/Home");
        //DisplayAlert("Added", "Your Data has been added", "OK")
        var response =await httpClient.GetStringAsync("http://localhost:40987/Api/Home/Post?username="+username.Text+"&password="+password.Text);


        var login = JsonConvert.DeserializeObject<List<User>>(response);

    }

只想使用 api 显示登录消息或错误消息

【问题讨论】:

  • 如答案部分所建议,请为代码块添加一个 try catch 以获取更多详细信息,但从代码中我只能猜测设备或模拟器无法连接到端点,如果您拥有该应用的 UWP 版本,请尝试运行它。如果这是导致问题的原因,我建议添加 ip 地址并至少禁用防火墙以测试端点。

标签: c# xamarin.forms


【解决方案1】:

试试这个:

    try{
     var Json = Newtonsoft.Json.JsonConvert.SerializeObject(user);
            HttpContent httpContent = new StringContent(Json);
            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/Json");
            var httpClient = new HttpClient();
            //httpClient.GetAsync("windows.digitalgramsoft.com/Api/Home");
            //DisplayAlert("Added", "Your Data has been added", "OK")
            var response =await httpClient.GetStringAsync("http://localhost:40987/Api/Home/Post?username="+username.Text+"&password="+password.Text);


            var login = JsonConvert.DeserializeObject<List<User>>(response);
    }catch(Exception ex){
    Console.WriteLine(ex.Message);
}

然后使用断点检查Exception 对象内的内容。从那里,您可以跟踪来源。

【讨论】: