无法从android中的ftp读取文件?

时间:2011-08-10 10:42:44

标签: android

我正在尝试从ftp服务器读取文件中的数据。当我从台式计算机运行时,这段代码在java中完美运行。我复制了相同的代码到android,我得到一个例外。例外是:

java.io.IOException:无法连接到服务器:无法检索文件:550

我不知道为什么当相同的代码在java中完美运行时它会发生。 java代码是:

String s = "ftp://username:password@ftp.mysite.x10.mx:21/sg1996text.txt;type=i";
    URL u;
    String f="";
    try {
        u = new URL(s);
        URLConnection uc=u.openConnection();
        BufferedInputStream bis=new  BufferedInputStream(uc.getInputStream()); //This is where exception i raised.
        System.out.println("IS opened");
        int i;
        while((i=bis.read())!=-1)
            f=f+(char)i;
        System.out.println("File Read");
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 

2 个答案:

答案 0 :(得分:1)

卸下:

;type=i

来自您的网址:

 String s = "ftp://username:password@ftp.mysite.x10.mx:21/sg1996text.txt;type=i";

它适用于我的应用程序。

答案 1 :(得分:0)

错误550 通常表示“权限错误”,因此最可能的原因是用户名/密码不匹配(但请参阅案例#3)。

然而,如果相同的代码适用于您的桌面,则用户名和密码应该是正确的。我看到的可能性是:

  • 您使用的软件包在桌面和Android之间并不相同,Android版本无法正确解析用户名/密码。尝试嗅探FTP流量,或将FTP服务器地址更改为您控制的FTP服务器(您可以在桌面上临时部署),并验证用户名和密码是否正确传输。
  • 存在DNS错误,您的桌面(或您的Android)未连接到ftp.mysite.x10.mx,而是连接到其他地方,例如: localhost上的开发安装(我做了一次;花了一些时间来弄明白)。尝试将服务器名称更改为其IP地址。
  • 作为情况(1),但是解析错误是由桌面版本中的TYPE I规范(“;; = =”,在URL的末尾)引起的。应该给出500错误,而不是550;但是几个服务器使用错误550来表示找不到文件,并且包认为你想要的文件是'sg1996text.txt; type = i'而不是'sig1996text.txt'。删除'; type = i',看看会发生什么。