繁体   English   中英

如何在android中检查URL的可用性

[英]How can I check the availability of an URL in android

我的问题是如何检查 URL 的可用性:

我的代码

  public boolean URLvalide(){

    String URL_CHECK = "testurl";

    try {
        URL url = new URL(URL_CHECK);
        URLConnection con = url.openConnection();
        con.connect();
        return true;
    } catch (MalformedURLException e) {
        return false;
    } catch (IOException e) {
        return false;
    }
}

每次都返回false

以下代码使用核心 Java 实现来检查链接是否可访问。 它应该适用于Android。 记住URL要填写完整,即有scheme,主机名,否则抛出异常。

public boolean checkURL () {
    try {
        URL myUrl = new URL("http://www.google.com");
        HttpURLConnection connection = (HttpURLConnection) myUrl.openConnection();
        connection.connect();
        int statusCode = connection.getResponseCode();
        if (statusCode == HttpURLConnection.HTTP_OK) {
            System.out.println("Accessible");
        } else {
            System.out.println("Not-Accessible");
        }
    } catch (Exception e) {
        System.out.println("not-accessible");
    }
    }

更新:

在Android中,上述方法可能由于两个原因而失败。

  1. 您定位的 URL 是 http 协议而不是 https。 在这种情况下,您需要在应用程序清单中允许明文流量。

     <application> ... android:usesCleartextTraffic="true"

2.您可能正在主线程中运行检查 url 代码。 Android 防止在主线程中访问网络请求。 要解决此问题,请将您的代码放在 AsyncTask 或单独的线程中。 以下代码仅用于说明。

Thread backgroundThread = new Thread(new Runnable() {
        @Override
        public void run() {
            checkURL();
        }
    });
    backgroundThread.start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM