【问题标题】:FTP to 1and1.comFTP到1and1.com
【发布时间】:2015-07-21 08:58:26
【问题描述】:

下面的代码适用于我尝试过的另外两个网站,但不适用于我由 1and1 托管的域。返回代码始终为 500 - 永久否定完成回复。

我知道我正在连接,因为 FTPReply.isPositiveCompletion(reply) 返回 true。我尝试从手机存储中读取文件并从代码中早期填充的字节数组发送它。这是字节数组。两者都返回 500。两者都在其他网站上工作。

如果我不使用 enterLocalPassiveMode() 代码将停止在 storeFile 调用上执行。没有例外,没有套接字超时。它只是在那里结束,异步任务不会在该会话中再次调用。该代码不会在其他网站上执行此操作。

我已经尝试过 ASCII 和 BINARY 文件类型。两者都返回 500。1and1 站点说使用我的域和端口 21。我可以连接 CoreFTP 并使用我设置的两个帐户进行读写。

我也厌倦了 ftp4j,并且在所有情况下都有相同的响应,所以回到 Apache,因为代码已经编写了强大的错误捕获。

我已经尝试过 mydomain.com 和 ftp.mydomian.com。两个500。我还尝试了可以​​在 CoreFTP 窗口中看到的点四边形,但我得到“无法解析主机名”的 Apache Java 代码。也许不是静态 IP?

这就是 CoreFTP 所做的。它连接到端口 21,然后进入被动模式和 ASCII 数据连接。

这是一个很长的机会,但有其他人曾经在 Android Studio 中使用 Java 将 FTP 传输到他们的 1and1 域吗?

格雷格

正在解析 mydomain.com...
将套接字 #5684 连接到 xx.xx.xx.xxx,端口 21... 220 微软 FTP 服务
用户 ftp79815757-0
ftp79815757-0 需要 331 密码。
通过 **********
230 用户已登录。
系统
215 Windows_NT
活下去…… 残疾人
257 "/ftp79815757-0" 是当前目录。
PASV
227 进入被动模式(xx,xxx,xx,xxx,xxx,xxx)。
列表
将套接字 #5700 连接到 xx.xx.xx.xx,端口 62894... 150 打开 ASCII 模式数据连接。
226 传输完成。
在 0.094 秒内传输了 51 个字节

FTPClient mFtpClient = new FTPClient();
String ip = "my domain dot com";
String userName = "ftp79815757-0";
String pass = "password";

mFtpClient.connect(InetAddress.getByName(ip));
mFtpClient.login(userName, pass);
int reply = mFtpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
    mFtpClient.setFileType(FTP.BINARY_FILE_TYPE);
    //one thread said this would do the trick
    mFtpClient.enterLocalPassiveMode();
    mFtpClient.enterRemotePassiveMode();

    InputStream stream = new ByteArrayInputStream(imageData);

    //I have two accounts. One points to images_in
    /*if (!mFtpClient.changeWorkingDirectory("images_in")) {
       Log.e("ChangeDir", String.valueOf(mFtpClient.getReplyCode()));
    }*/

    if (!mFtpClient.storeFile("remoteName.jpg", stream)) {
        Log.e("FTPUpload", String.valueOf(mFtpClient.getReplyCode()));
    }

    stream.close();
    mFtpClient.disconnect();
}

【问题讨论】:

    标签: java android ftp


    【解决方案1】:

    终于明白了。主要问题是我使用的是旧版本的 Apache 库。我使用的 Jar 是 commons-net-1.4.jar。另一个线程中的某个人将我指向 commons-net-3.3.jar。

    我将 mFtpClient.enterLocalPassiveMode() 和 mFtpClient.enterRemotePassiveMode() 都注释掉了,并且由于一些线索和错误,它与 FTP.BINARY_FILE_TYPE 而不是 ASCII_FILE_TYPE 一起工作。 ASCII 把文件放在那里,但它是垃圾。

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2012-01-30
      相关资源
      最近更新 更多