【问题标题】:Error SocketTimeoutException connecting to google in android在android中连接到google时出现错误SocketTimeoutException
【发布时间】:2020-06-01 20:28:43
【问题描述】:

我的应用 (Android) 的连接出现问题。我正在使用以下代码检查我是否有互联网连接。

    ConnectivityManager cm = (ConnectivityManager)context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        try {
            URL url = new URL("http://www.google.com/");
            HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
            urlc.setRequestProperty("User-Agent", "test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(5000); // mTimeout is in seconds
            urlc.connect();
            if (urlc.getResponseCode() == 200) {
                return true;
            } else {
            return false;
        }
    } catch (IOException e) {
            Log.i("warning", "Error checking internet connection", e);
            return false;
        }
    }

尝试几次后,我遇到的问题是我正在对“www.google.com.”执行 ping 操作。 我不明白为什么会这样。在我的项目的最后 2 年里,这段代码运行良好。

【问题讨论】:

  • 尝试以下操作:1- 删除 http://,2- 放置 https://,3:明确设置端口 (80)。我的意思不是同时三个,只测试第一个,如果它不起作用尝试第二个,依此类推
  • 感谢您的回答,我正在阅读文档并找到了问题的根源。谷歌已经关闭了一些服务的认证,我正在努力解决这个问题。我最大的问题是我可以修改设备的代码并且由于这个连接问题我可以更新。会有一些方法可以“欺骗”设备做出响应,并且在不更改代码的情况下不会通过此测试?

标签: java android httpurlconnection socket-timeout-exception


【解决方案1】:

如果您在最新版本的 android 上对此进行测试,则需要验证您是否已将域列入白名单。您应该阅读以下内容: https://developer.android.com/training/articles/security-config

作为快速修复,您可以将以下属性添加到应用程序标签:

android:usesCleartextTraffic="true"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多