当前位置: 首页 > 知识库问答 >
问题:

FTPSClient发送二进制文件:"SSLHandshakeExc0019:远程主机在握手过程中关闭连接"[重复]

郁鸿博
2023-03-14

在端口21上建立FTP TLS显式连接后,我想将一个文件上载到该服务器。调用ftps后。存储文件(文件名,输入流) 我收到了这个异常javax。网ssl。SSLHandshakeException:握手期间远程主机关闭连接。文件本身在FTP服务器上创建,但为空,包含0字节。我在1.8.172上运行我的JVM,所以这不是Java7的问题。

通过FileZilla连接到FTP服务器,我注意到该服务器使用TLS 1.2,因此我将该协议添加到JVM参数和会话启用协议中。还是一样的结果。

FTPSClient ftps = new FTPSClient(false);
ftps.connect(host, port) //The port is 21
ftps.login(user, password);
ftps.execPROT("P"); //Turning file transfer encryption which is required by the server
ftps.setEnabledProtocols(new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"});
ftps.changeWorkingDirectory(ftpCatalog); //Catalog gets changed succesfully
ftps.setFileTransferMode(FTP.BINARY_FILE_TYPE);
ftps.setFileType(FTP.BINARY_FILE_TYPE);
ftps.setCharset(StandardCharsets.UTF_8);
FileInputStream inputStream = new FileInputStream(filePath);
ftps.storeFile(fileName, inputStream)// <--- Here the exception's gets thrown

更新:我已经设法直接从FTP服务器获取日志

450 TLS session of data connection has not resumed or the session does not match the control connection

主题关闭后,它现在是一个副本。这里给出了答案:如何使用相同的TLS会话连接到具有数据连接的FTPS服务器?


共有1个答案

双元魁
2023-03-14

检查服务器回复,看看连接是否真的工作。

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


boolean success = ftpClient.login(user, pass);

使用此布尔值检查登录是否按预期进行。

使用这些属性也可以防止意外断开:超时以毫秒为单位。

ftpClient.setDefaultTimeout(timeout);
ftpClient.setDataTimeout(timeout);
ftpClient.setConnectTimeout(timeout);
ftpClient.setControlKeepAliveReplyTimeout(timeout);

在单个文件发送上,请使用以下内容:

public boolean uploadSingleFile(FTPClient ftpClient, String localFilePath, String remoteFilePath)
            throws IOException {
        File localFile = new File(localFilePath);

        InputStream inputStream = new FileInputStream(localFile);
        try {
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            return ftpClient.storeFile(remoteFilePath, inputStream);
        } finally {
            inputStream.close();
        }
    }

 类似资料:
  • 更新:我已经设法直接从FTP服务器获取日志,其中 主题关闭后,它现在是一个重复。这里给出了答案:如何使用相同的TLS会话连接到具有数据连接的FTPS服务器?

  • 感谢您抽出时间阅读我的问题-我正在使用EclipseIDE。我希望Jsoup连接https url-https://www.icegate.gov.in/使用 但它在线程“main”javax中给出了错误,而当我对其他https(如linkedin)使用相同的代码时,它就工作了。。。我不知道如何解决这个问题。 我获得了该网站的证书,并安装在我的jre/lib/security文件夹中,但它对我也没

  • 我试图连接到需要显式FTP在TLS的FTP。我正试图从我的本地机器上做这件事。 下面是我使用的代码 当我跑的时候,我得到下面的异常 下面是我从Java CommandListener获得的日志 下面是我尝试使用FileZilla连接时的日志。它连接良好,我可以传输文件。但是当我尝试使用Java时,它没有连接 你们能帮忙吗? 亲切的问候乔恩

  • 我正在尝试连接到SOAPendpoint。 使用上面的方法,我不断得到下面的错误 java.lang.Thread.run(未知来源)[na: 1.8。0_191]原因:com.sun.xml.messaging.saaj.SOAPExceptionImpl:消息发送失败com.sun.xml.messaging.saaj.client.p2p。HttpSOAPConnection.post(Ht

  • 我们为特定的IP地址配置了一个大型F5负载平衡器虚拟服务器,它将传入的https请求重定向到多个Windows服务器,在这些服务器上可以生成响应。 我正在使用SoapUI测试通过大F5中虚拟服务器的IP地址对这些windows服务器的访问。 使用由组织生成的服务器和客户机证书,我们在该组织中也进行了此设置,并通过SoapUI发送请求,我得到了预期的响应。 业务要求要求由Thawte签署商业证书。

  • SSLHandShakeException:尝试发布到以下URL时,在握手过程中发生远程主机关闭连接异常: https://testapi.title365.com/keystoneB2b/ordersservice.aspx 谁能帮帮忙吗?