Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第二次阅读网页总是超时_Java_Url_Inputstreamreader - Fatal编程技术网

Java 第二次阅读网页总是超时

Java 第二次阅读网页总是超时,java,url,inputstreamreader,Java,Url,Inputstreamreader,我有以下阅读网页的方法: public String readURL() { String response=""; try { URL url=new URL(urlString); BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream())); response=br.readLine(); br.close();

我有以下阅读网页的方法:

public String readURL() {

    String response="";
    try {
        URL url=new URL(urlString);
        BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));
        response=br.readLine();
        br.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null,"Unable to connect to server: "+e.toString(),windowTitle,JOptionPane.ERROR_MESSAGE);
        System.exit(-1);
    }
    return(response);
}

当我第一次调用这个方法时,它总是有效的。但是,当我第二次调用它时(在同一次运行中),InputStreamReader超时。urlString在这两次都是相同的。我可以重新运行应用程序,第一次调用成功。我可以在浏览器中连续多次使用该urlString,而且每次都会成功。似乎有些事情我没有结束,或者我需要做一些清理。为了执行后续调用,该方法缺少什么?TIA.

对我来说,它工作得很好,我就是这么做了

System.out.println(readURL());
System.out.println(readURL());
这对我来说很好。我唯一能想到的是,您可能需要关闭InputStreamReader。InputStream不需要关闭,javadoc说InputStream.close()不做任何事情


编辑:可能网站不喜欢脚本快速连续调用两次(我不知道网站如何检测到这一点,但可能是可能的)。请尝试使用其他站点测试脚本。

可能
close
也会关闭
系统。在
小技巧中:我会
close()
在finally块内,或者更好地使用Try with resources无需关闭InputStreamReader。“你的代码为我工作”的答案并不那么好,因为它表明问题出在其他地方,而且目前的问题是不可回答的。我不是这方面的专家,所以可能没有必要。“你的代码为我工作”确实意味着问题出在其他地方,但这并不意味着答案不好。它鼓励提问者在其他地方找到答案(比如我的编辑)。有一个差异可能表明问题所在。第一个调用是在“main”中完成的,当某个响应返回时,将显示JDialog。用户填写表单并单击submit按钮后,按钮侦听器是对该方法的第二次调用。在侦听器中进行网络处理是否有问题?@WtRiker:您的问题对我们来说是不可重现的,您需要将其隔离在最小的代码中,以重现问题a,然后将其发布到您的问题中。否则任何人都只能猜测(正如我们在这里看到的),我必须把我的主机放在url中,我不想在公共论坛上发布它。我可以发布SSCCE并通过PM提供url吗?