1

访问第二次从 URLConnection 获取输入流时出现 504 异常。当我在访问特定 url 时重新启动我的系统时,它运行良好,但是在第二次访问时它会引发错误。

笔记 :

Using Tomcat 6, Java, JSP

代码如下:

    OutputStream outStream = null;
    URLConnection uCon = null;

    InputStream is = null;
    try {
        URL Url;
        byte[] buf;
        int ByteRead, ByteWritten = 0;
        Url = new URL("www.sample.com/download/file.xml");
        outStream = new BufferedOutputStream(new FileOutputStream("/home/temp/myfile.xml"));

        uCon = Url.openConnection();
        is = uCon.getInputStream();
        buf = new byte[size];
        while ((ByteRead = is.read(buf)) != -1) {
            outStream.write(buf, 0, ByteRead);
            ByteWritten += ByteRead;
        }
        System.out.println("Downloaded Successfully.");
        is.close();
        outStream.close();
    } catch (Exception e) {
        System.out.println("Required File is not there  "+e.getMessage());            
    }
4

2 回答 2

3

一旦你阅读了流,你就已经阅读了流。您不能多次重新读取流,而不调用mark()reset()方法,并且InputStream您正在使用的类的实现应该首先支持这一点。

除此之外:

  • 您的 try-catch 语句需要:
    • 要捕获正确的异常,而不仅仅是 throw Exception,而是 -- IOExceptionURLException或任何相关的(如果您删除catch (Exception e)块,您的 IDE 会为您推荐/修复此问题)。
    • finally检查流是否不为空并关闭它们的块。
  • 你的方法应该抛出一个 IOException。
于 2013-03-01T11:14:04.483 回答
0

也许您没有以正确的方式关闭输入流或输出流。始终使用

finally { 
    is.close(); 
    outputStream.close()
}
于 2013-02-28T11:44:04.763 回答