我有一些代码需要与服务器建立连接,一旦形成连接,服务器会解释发送的字符串并更新数据库中的名称。即我发送了#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);
}
}
答案 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对象。没什么,特别是在网络上没有任何东西。