我正在使用" URLConnection"在java中执行get请求。我将获取请求发送到不同的IP地址以生成警报。如果url有效,则建立连接并从url读取数据返回,但如果连接不成功则不返回任何内容。我需要知道urlconnection中是否有任何isconnect方法,因为我需要为我的程序设置一个标志,我无法找到任何方法来确定不成功的连接,我使用以下代码: 网址url =新网址(地址);
URLConnection conn = url.openConnection();
conn.setConnectTimeout(20);
//bool flag=conn.isconnect()
BufferedReader br = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
System.out.println("connected");
while ((line = br.readLine()) != null)
{
result += line;
}
//if (flag){triggered the ip}
//if (!flag){not triggered}
我需要执行注释if条件,但我正在努力,因为程序没有达到" bufferedReader br"如果ip无效或者不存在则声明。
答案 0 :(得分:-1)
url.openConnection,当无法建立连接时,conn.getInputStream将抛出异常。
唯一的问题是,如果您的服务器将接受连接但不会发送enything(导致它挂起,服务器端的代码有错误)。 因此,您必须调用setConnectTimeout才能在发生异常时获取异常。
Appology你已经设置了超时。异常处理应该完成这项工作。
try{
URLConnection conn = url.openConnection();
conn.setConnectTimeout(20);
conn.setReadTimeout(...)
BufferedReader br = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
System.out.println("connected");
while ((line = br.readLine()) != null)
{
result += line;
}
} catch (IOException e) {
... deal with wrong address, timeout and etc
}