如何在java中检查url连接状态
我使用“URLConnection”在java中执行get请求。我将get请求发送到不同的Ip地址以生成警报。如果url有效,它会建立连接并读取url返回的数据,但如果连接失败,它不会返回任何内容。我需要知道urlconnection中是否有isconnect方法,因为我需要为我的程序设置一个标志,但我找不到任何方法来确定不成功的连接,我使用以下代码: URL=新的URL(地址)如何在java中检查url连接状态,java,httpurlconnection,Java,Httpurlconnection,我使用“URLConnection”在java中执行get请求。我将get请求发送到不同的Ip地址以生成警报。如果url有效,它会建立连接并读取url返回的数据,但如果连接失败,它不会返回任何内容。我需要知道urlconnection中是否有isconnect方法,因为我需要为我的程序设置一个标志,但我找不到任何方法来确定不成功的连接,我使用以下代码: URL=新的URL(地址) 我需要执行带注释的if条件,但我正在努力,因为如果ip无效或不存在,程序在“bufferedReader br”语句
我需要执行带注释的if条件,但我正在努力,因为如果ip无效或不存在,程序在“bufferedReader br”语句之后无法到达。url.openConnection,conn.getInputStream将在无法建立连接时抛出异常 唯一的问题是,如果您的服务器将接受conneciton,但不会发送enything(因为它挂起,服务器端的代码有一个bug)。 因此,当异常发生时,必须调用setConnectTimeout来获取异常 您已经设置了超时。异常处理应该完成这项工作
试试看{
URLConnection conn=url.openConnection();
连接设置连接超时(20);
conn.setReadTimeout(…)
BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
System.out.println(“已连接”);
而((line=br.readLine())!=null){
结果+=行;
}
}捕获(IOE异常){
…处理错误的地址、超时等
}
使用try/catch捕获相关异常。连接超时无法解决服务器不发送任何内容的问题。你需要一个读取超时。20毫秒对这两种时间来说都太短了。
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}