Java URL似乎没有连接,但没有抛出异常

时间:2014-05-16 21:20:30

标签: java database http url jtable

我有一些代码需要与服务器建立连接,一旦形成连接,服务器会解释发送的字符串并更新数据库中的名称。即我发送了#34; http://app.sitename.tv/api/add/aName"并添加" aName"到数据库,或者我发送 " http://app.sitename.tv/api/remove/aName"它删除了名称。

当我在浏览器中输入这些链接并运行它时,它可以正常工作。但是,从我的程序中,它不会抛出任何异常,但不会更新数据库。我不确定从哪里开始。我尝试关闭防火墙,但没有任何区别。

if ((Boolean) value)
{
    System.out.println("setValue");
    try 
    {
        String bvURL = "http://app.sitename.tv/api/add/" + data.name.get(row);
        URL myURL = new URL(bvURL);
        URLConnection myURLConnection = myURL.openConnection();
        myURLConnection.connect();
        System.out.println(bvURL);
    } 
    catch (MalformedURLException e) 
    { 
        System.err.println("MalformedURLException: " + e);
    } 
    catch (IOException e) 
    {   
        System.err.println("IOException: " + e);
    }
}
else if ((Boolean) value == false)
{
    System.out.println("setValue");
    try 
    {
        String bvURL = "http://app.sitename.tv/api/remove/" + data.name.get(row);
        URL myURL = new URL(bvURL);
        URLConnection myURLConnection = myURL.openConnection();
        myURLConnection.connect();
        System.out.println(bvURL);
    } 
    catch (MalformedURLException e) 
    { 
        System.err.println("MalformedURLException: " + e);
    } 
    catch (IOException e) 
    {   
        System.err.println("IOException: " + e);

    }
}

2 个答案:

答案 0 :(得分:0)

您获得的URLConnection实际上是HttpURLConnection。您已打开连接但未关闭它。要请求关闭HttpURLConnection,您应该调用其disconnect()方法。可能需要关闭连接以确保服务器完全接收您的请求并对其进行处理。

例如,您可以使用以下命令替换第一个try / catch块:

HttpURLConnection myURLConnection = null;
try {
    String bvURL = "http://app.sitename.tv/api/add/" + data.name.get(row);
    URL myURL = new URL(bvURL);
    myURLConnection = (HttpURLConnection) myURL.openConnection();
    myURLConnection.connect();
    System.out.println(bvURL);
} catch (MalformedURLException e) { 
    System.err.println("MalformedURLException: " + e);
} catch (IOException e) {   
    System.err.println("IOException: " + e);
} finally {
    if (myURLConnection != null) {
        myURLConnection.disconnect();
        myURLConnection = null;
    }
}

如果仍然无效,您可能需要使用InputStream从连接中获取getInputStream(),并在断开连接之前使用所有输入数据。

答案 1 :(得分:0)

如果您不检查响应代码或获取输入或输出流,则根本没有连接。通过调用connect()完成的所有工作就是在自己的JVM中创建一个HttpURLConnection对象。没什么,特别是在网络上没有任何东西。