公司与外部合作项目,需要获取外部合作方ftp上的文件,公司服务器是布置在内网,需要通过代理才能访问到外网。
通常在内网我们访问FTP会使用org.apache.commons.net.ftp.FTPClient,只需要设置一下
FTPClient ftpClient = new FTPClient(); ftpClient.connect(ftpHostname); ftpClient.login(ftpUsername, ftpPassword);
就可以连接上要访问的ftp去获取文件。但是如果要访问外网,是用代理的话,尝试使用在FTPClient中设置
ftpClient.setProxy(proxy);
但是报异常说找不到setProxy这个方法。之后转变思路,既然代理是http的方式访问ftp,就使用java.net.URLConnection这个类,代码示例如下:
private String ftpClient(String fileName) { logger.info("连接FTP获取文件:{}",fileName);//fileName中包含路径 String content = null; URL url; URLConnection connection; try { //设置要访问的ftp地址和文件 String ftpurl = "ftp://"+Username+":"+Password+"@"+ftpHost+":"ftpPort+"/"+fileName; //设置代理 InetSocketAddress addr = new InetSocketAddress(