gpt4 book ai didi

java - 带有 FTP 登录错误的 HTTPS 客户端 : javax.net.ssl.SSLException: 502 SSLv23/TLSv1 java

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:49 24 4
gpt4 key购买 nike

我是 Java 的新手,所以你解释得越多,我学到的就越多,我问的问题也就越少;)让客户端登录。我试过更改端口号(443、20 等),但它们都没有在控制台日志中返回响应,它只返回超时错误。我唯一可以采取一些行动的是端口 21。我知道这是 FTP,我认为这可能是错误的来源,但我不知道如何纠正它,因为显然更改端口 # 不会纠正问题。任何帮助,将不胜感激!

这是我的代码:

import java.io.IOException;
import org.apache.commons.net.ftp.*;

public class FTPApp {
private static void showServerReply(FTPSClient ftpClient) {
String[] replies = ftpClient.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}

public static void main(String[] args) {

String server = "ftp.availity.com";
int port = 21;
String user = "user";
String pass = "pass";
FTPSClient ftpClient = new FTPSClient();

try {
ftpClient.connect( server, port);
showServerReply(ftpClient);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftpClient.login(user, pass);
showServerReply(ftpClient);
if (!success) {
System.out.println("Could not login to the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something wrong happened");
ex.printStackTrace();
}
}

这是错误:

Oops! Something wrong happened
javax.net.ssl.SSLException: 502 SSLv23/TLSv1
at org.apache.commons.net.ftp.FTPSClient.execAUTH(FTPSClient.java:242)
at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:225)
at org.apache.commons.net.SocketClient._connect(SocketClient.java:244)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:202)
at FTPApp.main(FTPApp.java:23)

最佳答案

I have tried changing the port numbers (443, 20, etc) but they all do not return a response in the console log and it only returns a timeout error. The only one I can get some action with is port 21.

毫无疑问:端口 443 是 HTTPS,与 FTP 完全无关。端口 20 是用作 FTP 数据连接源的数据端口,但不是需要连接的端口。端口 21 是 FTP 控制端口,即这是实际预期连接的端口。

Oops! Something wrong happened javax.net.ssl.SSLException: 502 SSLv23/TLSv1 at org.apache.commons.net.ftp.FTPSClient.execAUTH(FTPSClient.java:242)

此处使用的命令是 AUTH TLS,客户端使用它来将普通 FTP 连接(根据端口 21 的要求)升级到 FTPS,即 FTP over TLS。它类似于 STARTTLS 将普通 SMTP 连接升级到 SMTP over TLS。

AUTH TLS 期望来自服务器的成功响应代码。相反,它得到代码 502,代表“命令未实现”。这只是意味着您与之交谈的 FTP 服务器不支持基于 TLS 的 FTP,并且您无法从客户端执行任何操作来强制执行此操作。

如果您可以控制服务器,则需要配置服务器以支持 TLS。如果您无法控制服务器,您可以使用普通的未 protected FTP(即不是 FTPSClient,而是 FTPClient)或放弃。

I am pretty new to Java ...

这些都不需要任何 Java 知识。它只需要了解 FTP 和 FTPS 的工作原理。

关于java - 带有 FTP 登录错误的 HTTPS 客户端 : javax.net.ssl.SSLException: 502 SSLv23/TLSv1 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50868600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com