我正在尝试使用java.net.URLConnection通过匿名身份验证从ftp服务器检索文件。
try {
url = new URL("ftp://ftp2.sat.gob.mx/Certificados/FEA/000010/000002/02/03/05/00001000000202030500.cer");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) >= 0)
{
baos.write(buffer, 0, bytesRead);
}
baos.flush();
arr = baos.toByteArray();
in.close();
} catch (Exception e) {
throw new Exception("Error SAT: " + e.getMessage());
}
我想要获取的文件是这个,它在匿名身份验证ftp站点中: ftp://ftp2.sat.gob.mx/Certificados/FEA/000010/000002/02/03/05/00001000000202030500.cer
但每次我收到此错误: 权限被拒绝:未经许可尝试绑定端口。
我正在使用GoogleAppEngine Java 1.7
欢迎提出任何建议。
答案 0 :(得分:0)
根据this post和this AppEngine Socket Java API documentation,如果您没有预算将限额设置为0美元,那么您很可能启用了不支持结算的应用。
答案 1 :(得分:0)
我不是Java人,但我怀疑你正在尝试使用“主动”FTP,这可能是默认的。
活动FTP通过绑定到接收计算机(在本例中为客户端)上的端口,发送服务器可以连接到该端口以发送文件;端口号在get
请求中发送。这在许多环境中都不起作用,例如NAT。
通常的解决方案是使用“被动”模式,其行为更像HTTP,不需要任何端口绑定。如果Java中有一种方法可以将该连接转换为使用被动模式,那么它应该绕过权限问题。