Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在android中从ftp读取文件?_Android - Fatal编程技术网

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

无法在android中从ftp读取文件?,android,Android,我正在尝试从ftp服务器读取文件中的数据。当我在桌面计算机上运行时,这段代码在java中工作得非常好。我把同样的代码复制到android上,我得到了一个例外。例外情况是: java.io.IOException:无法连接到服务器:无法检索文件:550 我不知道当相同的代码在java中完美地工作时,为什么会发生这种情况。 java代码是: String s = "ftp://username:password@ftp.mysite.x10.mx:21/sg1996text.txt;type=i";

我正在尝试从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();
    } 
删除:

;type=i
从您的URL:

 String s = "ftp://username:password@ftp.mysite.x10.mx:21/sg1996text.txt;type=i";
它在我的应用程序中工作。

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

然而,如果相同的代码在你的桌面上工作,用户名和密码应该是正确的。我看到的可能性是:

  • 您正在使用的软件包在desktop和Android之间不相同,并且Android版本无法正确解析用户名/密码。尝试嗅探FTP通信,或将FTP服务器地址更改为您控制的FTP服务器(您可以在桌面上临时部署一个),并验证用户名和密码是否正确传输
  • 出现DNS错误,您的桌面(或Android)没有连接到
    ftp.mysite.x10.mx
    ,而是连接到其他地方,例如本地主机上的开发安装(我做过一次;花了一些时间才弄清楚)。尝试将服务器名称更改为其IP地址
  • 与案例(1)相同,但解析错误是由类型I规范(URL末尾的“;TYPE=I”)引起的,Android软件包无法识别,而桌面软件包无法识别。应该给出500个错误,而不是550;但是有几个服务器使用错误550指示找不到文件,并且软件包认为您想要的文件是'sg1996text.txt;type=i'而不是'sig1996text.txt'。删除“;键入=i'并查看发生了什么

我遇到了一个类似的问题,得到了相同的错误。类似的问题: