java代码中的多个url连接

时间:2012-12-30 16:44:23

标签: java url connection

我有一个跟随

多次调用的函数
report="http://myURL/some_file.php" + "?someParam=" + getSomeParam()";

其中myURL始终相同,some_file.phpsomeParam每次都不同。

private static void makeReport(final String report) {
    try {
        URL url = new URL(report);
        try {
            url.openStream();
        } catch (IOException e) {
            return; // do nothing
        }
    } catch (MalformedURLException e) {
        return; // do nothing
    }
}
问题是,如果是处理这种情况的有效方法,每次开放 新连接有不同的参数?此外,报告对主程序没有影响, 它应该在不同的线程/进程中完成吗?

1 个答案:

答案 0 :(得分:1)

打开一个新连接有一些开销,但听起来不像你的程序大量使用套接字,所以开销应该可以忽略不计。你不需要两个试块,顺便说一句,你可以只有一个,然后将一个接一个地放在一起。

private static void makeReport(final String report) {
    InputStream in = null;
    try {
        URL url = new URL(report);
        in = url.openStream();
    } catch (MalformedURLException e) {
        return; // do nothing
    } catch (IOException e) {
        return; // do nothing
    } finally {
        try { in.close(); } catch (IOException ex) { ex.printStackTrace(); }
    }
}

至于这个方法是否应该在自己的线程中,取决于上下文。它需要异步吗?对于它的价值,做一个简单的GET请求不应该花太长时间。我无法想象你需要它在自己的线程中的情况。

作为最后一点,无论何时打开连接,关闭它都是一个好习惯,特别是在try-catch-finally(或try-with-resources)构造中。不遵循这种做法是在更复杂的套接字编程中引入连接泄漏的好方法。