检查网站是否可用
Check if website is available
我想检查网站是否可用。它在网站可用时有效,但每次无法连接到该网站时它都会崩溃。如果 NetTask class.
有问题
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();
}
}
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();
}
}
在这里,如果无法连接,将抛出异常,并打印堆栈跟踪。
紧接着,您尝试 return addr
的 hostAddress
成员,但在这种情况下 addr
是 null
。
要么在 try 块中添加一个 return 语句,并在 try catch 之后(或在 catch 块中)添加 return null,要么在 catch 块中抛出一个 Exception。
如果 addr
为空,则无法使用 .getHostAddress()
获取地址。只是 return 它为 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;
}
}
}
public static InetAddress getByName(String host)
throws UnknownHostException
这意味着如果主机名不存在,函数抛出异常(如果未捕获则崩溃)实际上是正常行为。
所以只需要做一个修改就可以坚持抛接,就像这样:
java.net.InetAddress addr = null;
try {
addr = java.net.InetAddress.getByName(params[0]);
return addr.getHostAddress();
} catch (UnknownHostException e) {
return null; }
这应该是 return 地址或 NULL。
我想检查网站是否可用。它在网站可用时有效,但每次无法连接到该网站时它都会崩溃。如果 NetTask class.
有问题 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();
}
}
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();
}
}
在这里,如果无法连接,将抛出异常,并打印堆栈跟踪。
紧接着,您尝试 return addr
的 hostAddress
成员,但在这种情况下 addr
是 null
。
要么在 try 块中添加一个 return 语句,并在 try catch 之后(或在 catch 块中)添加 return null,要么在 catch 块中抛出一个 Exception。
如果 addr
为空,则无法使用 .getHostAddress()
获取地址。只是 return 它为 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;
}
}
}
public static InetAddress getByName(String host)
throws UnknownHostException
这意味着如果主机名不存在,函数抛出异常(如果未捕获则崩溃)实际上是正常行为。
所以只需要做一个修改就可以坚持抛接,就像这样:
java.net.InetAddress addr = null;
try {
addr = java.net.InetAddress.getByName(params[0]);
return addr.getHostAddress();
} catch (UnknownHostException e) {
return null; }
这应该是 return 地址或 NULL。