【问题标题】:Check async connection to internet with Xam.Plugin.Connectivity使用 Xam.Plugin.Connectivity 检查与 Internet 的异步连接
【发布时间】:2018-04-17 23:52:04
【问题描述】:

我正在尝试验证我的应用程序是否可以访问互联网,为此我占用了其版本 4 中的插件 Xam.Plugin.Connectivity ...问题是我在 Ping 网络时收到的答案总是错误的

这是我从我的应用程序登录中调用的函数...如您所见,它是一个异步函数...

        private async void Login()
        {
            IsRunning = true;
            IsEnabled = false;

            var connection = await apiService.CheckConnection();
            if (!connection.IsSuccess)
            {
                IsRunning = false;
                IsEnabled = true;

                await dialogService.ShowMessage("Error", connection.Message);
                return;
            }

}

这是验证连接状态的类

public async Task<Response> CheckConnection()
        {   
            if (!CrossConnectivity.Current.IsConnected)
            { 
                    return new Response
                    {
                        IsSuccess = false,
                        Message = "Porfavor active su servicio de internet."
                    };

                }

        var isReachable = await CrossConnectivity.Current.IsRemoteReachable("www.google.com");

                if (!isReachable)
                {

                return new Response
                {
                    IsSuccess = false,
                    Message = "Verifique su conexion a internet."
                };

                }

                else
                {
                    return new Response
                    {
                        IsSuccess = true,
                        Message = "OK"
                    };

                }

            }

问题发生在到达IsRecheable变量的时候,取false值,如果跟在后面不进入...

但它会立即返回“空”连接的状态...

我也收到以下错误

我已经给了相应的插件运行权限

发生了什么事?任何我做错的异步调用?这个插件有什么推荐吗?有什么帮助吗?

【问题讨论】:

  • 格式正确的 uri 包含协议“google.com

标签: c# asynchronous xamarin xamarin.forms async-await


【解决方案1】:

www.google.com 不是格式正确的 URL,因为它缺少协议(即 http)。

http://www.google.com 将是一个格式正确的 URL,可以解析为它的所有 URI 组件。

例子:

var isReachable = await CrossConnectivity.Current.IsRemoteReachable("http://www.google.com");

注意:IsRemoteReachable 也可以只接受主机名,所以google.comstackoverflow.com 也可以。

【讨论】:

  • 虽然他的回答停止显示 Uri 的错误,但问题仍然存在,并且行为相同.....在我的警告部分中它向我抛出:'IConnectivity.IsRemoteReachable(string, int, int )' 已过时:'此方法现已过时,并替换为采用完整 Uri 的 IsRemoteReachable。此方法将在以后的修订版中删除。'....对我有帮助吗? @SushiHangover
猜你喜欢
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2020-11-07
相关资源
最近更新 更多