没有通过URLConnection发送到服务器

时间:2014-07-21 20:46:06

标签: java ftp urlconnection

所以我创建了一个与FTP和SQL服务器通信的程序。我在我的Windows机器上运行我的程序,一切正常。但是当我在我的Ubuntu VM上运行该程序时,它无法运行。我的代码如下:

try {

    URL  url = new URL(location);
    System.out.println("Created url");

    URLConnection urlc = url.openConnection();

    System.out.println("Created URLConnection");

    urlc.setDoOutput(true);

    System.out.println("Set Output");

    OutputStreamWriter out = new OutputStreamWriter(urlc.getOutputStream());
    System.out.println("Created OutputStreamWriter");

    System.out.println("Hello World.");

    out.write(Var.pressed);
    System.out.println("Wrote String");

    out.close();

    System.out.println("Closed OutputStreamWriter");

} catch (Exception ex) {
    ex.printStackTrace();
}

程序在我的FTP上创建一个文件然后写入它。正在创建该文件但它是空的。 不会抛出任何错误我的程序会打印以下内容

  • 创建网址
  • 创建URLConnection
  • 设置输出

然后什么都不做。它不会抛出错误,它不会崩溃,也不会停止。终端刚刚打开。我也试过运行.jar但没有任何反应。

好像问题是在这里创建的:

OutputStreamWriter out = new OutputStreamWriter(urlc.getOutputStream());

为什么没有写入文件?如果没有错误抛出我的程序有什么问题?

3 个答案:

答案 0 :(得分:0)

  

确实会抛出错误,

从其他所有内容来看,我认为你的意思是不会抛出错误。无论如何,我的回答是假设。

首先,程序挂起或等待并且不会产生错误的原因有很多。有时,如果你等待足够长的时间,系统阈值将会通过,即使你的程序很乐意等待,它也会超时。其他时候系统也没有注意。错误条件有点像礼貌。

我建议您尝试使用Ubuntu ftp line命令建立连接,并将其与Windows进行比较。 FTP协议通过端口做一些不寻常的事情。连接在一个端口上打开,但数据传输连接切换到另一个端口。可以通过更改端口来防火墙,防止数据传输。这也创建了“被动”与“主动”FTP的客户端。

答案 1 :(得分:0)

您至少需要获取响应代码或输入流。否则甚至不会形成TCP连接。否则你不知道服务器是否接受了你的输入。

你的头衔非常不准确。显然你正在创建OutputStreamWriter。您的问题是没有发送任何内容。而且SQL标签简直无关紧要。

答案 2 :(得分:-1)

如果没有错误消息,几乎不可能弄清楚它失败的原因。但是有一些建议。

首先,尝试添加System.err.println("test")这将证明输出日志不仅会捕获System.out AKA标准输出流,还会捕获标准错误流。 我认为,在此修复之后,ex.printStackTrace()将可见。

否则:您没有指定填充location字符串的方式。您确定,您对该目录有写入权限吗? 如果location为/tmp/foo/bar/myFile.txt,请确保目录/ tmp / foo / bar / exists(mkdir / tmp / foo / bar /)并且文件可访问(触摸/tmp/foo/bar/myFile.txt)

如果两者都没有报告错误并且第一个建议没有出现任何错误,那么程序可能会锁定并等待来自外部的某些内容。目前很难说清楚。