检查网站是否可用

时间:2017-09-06 10:00:35

标签: java android android-asynctask connection inetaddress

我想检查网站是否可用。它可以在网站可用时运行,但每次无法连接到网站时都会崩溃。如果NetTask类有问题。

    String netAddress = null;
    try
    {
        netAddress = new NetTask().execute("www.googlasdasdde.com").get();
        if(netAddress == null || netAddress == "" || netAddress.isEmpty()){
            Log.d("111", "brak sieci");
        } else {
            Log.d("111", "server działa");

        }
    }
    catch (Exception e1)
    {
        e1.printStackTrace();
    }

和NetTask:

public class NetTask extends AsyncTask<String, Integer, String>
{
    @Override
    protected String doInBackground(String... params)
    {
        java.net.InetAddress addr = null;
        try {
            addr = java.net.InetAddress.getByName(params[0]);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return addr.getHostAddress();
    }
}

3 个答案:

答案 0 :(得分:3)

assert_select 'div.panel-body div.pagination-main span', '1-5 of 5'

在这里,如果你无法连接,则会抛出异常,并打印堆栈跟踪。

在此之后,您尝试返回public class NetTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { java.net.InetAddress addr = null; try { addr = java.net.InetAddress.getByName(params[0]); } catch (UnknownHostException e) { e.printStackTrace(); } return addr.getHostAddress(); } } hostAddress成员,但在这种情况下addraddr

在try块中添加一个return语句,并在try catch之后(或在catch块中)返回null,或者在catch块中抛出一个Exception。

答案 1 :(得分:3)

如果addr为空,则无法使用.getHostAddress()获取地址。只需将其返回为null。

public class NetTask extends AsyncTask<String, Integer, String>
{
    @Override
    protected String doInBackground(String... params)
    {
        java.net.InetAddress addr = null;
        try {
            addr = java.net.InetAddress.getByName(params[0]);
            return addr.getHostAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
            return null;
        }
    }
}

答案 2 :(得分:1)

来自Documentation

public static InetAddress getByName(String host)
                          throws UnknownHostException

这意味着,如果主机名不存在,函数抛出异常(或者如果没有捕获则崩溃)实际上是正常 beahviour。

所以只需坚持使用一次修改即可获得一次修改,如下所示:

java.net.InetAddress addr = null;
try {
    addr = java.net.InetAddress.getByName(params[0]);
    return addr.getHostAddress();
} catch (UnknownHostException e) {
    return null; }

这应该返回一个地址OR NULL。