java - 第二次访问 -> 从 URLConnection getInputStream() 时出现 504 异常

标签 java jsp url httpurlconnection

第二次访问从 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());            
    }

最佳答案

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

除此之外:

  • 您的 try-catch 语句需要:
    • 要捕获适当的异常,而不仅仅是抛出 Exception,而是 -- IOExceptionURLException 或任何相关的(您的 IDE 将如果您删除 catch (Exception e) block ,建议/修复此问题。
    • finally block 检查流是否不为空并关闭它们。
  • 您的方法应该抛出 IOException。

关于java - 第二次访问 -> 从 URLConnection getInputStream() 时出现 504 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134359/

相关文章:

c# - URL 路由需要/Home/Page?page=1 而不是/Home/Page/1

java - 如何在运行时创建对象?

jsp - JSP 页面中用字符替换的 HTML 字符实体

java - taglib json 从数组创建对象

javascript - 在 iframe 中调用 jsp 页面

javascript - 如何在不为输出数组获取空值的情况下拆分字符串

java - 我的 Android 应用程序崩溃,触摸按钮无法正常工作

java - 自定义方法的 XStream 反序列化问题

java - 如何防止spring-web的spring-boot自动配置?

google-chrome - 如何让 Google Chrome 打开自定义 URL 方案处理程序?