权限被拒绝:未经许可尝试绑定端口。 FTP

时间:2014-02-28 22:07:38

标签: google-app-engine ftp urlconnection

我正在尝试使用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

欢迎提出任何建议。

2 个答案:

答案 0 :(得分:0)

根据this postthis AppEngine Socket Java API documentation,如果您没有预算将限额设置为0美元,那么您很可能启用了不支持结算的应用。

答案 1 :(得分:0)

我不是Java人,但我怀疑你正在尝试使用“主动”FTP,这可能是默认的。

活动FTP通过绑定到接收计算机(在本例中为客户端)上的端口,发送服务器可以连接到该端口以发送文件;端口号在get请求中发送。这在许多环境中都不起作用,例如NAT。

通常的解决方案是使用“被动”模式,其行为更像HTTP,不需要任何端口绑定。如果Java中有一种方法可以将该连接转换为使用被动模式,那么它应该绕过权限问题。