无法在android中从ftp读取文件?
我正在尝试从ftp服务器读取文件中的数据。当我在桌面计算机上运行时,这段代码在java中工作得非常好。我把同样的代码复制到android上,我得到了一个例外。例外情况是: java.io.IOException:无法连接到服务器:无法检索文件:550 我不知道当相同的代码在java中完美地工作时,为什么会发生这种情况。 java代码是:无法在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";
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)没有连接到
,而是连接到其他地方,例如本地主机上的开发安装(我做过一次;花了一些时间才弄清楚)。尝试将服务器名称更改为其IP地址ftp.mysite.x10.mx
- 与案例(1)相同,但解析错误是由类型I规范(URL末尾的“;TYPE=I”)引起的,Android软件包无法识别,而桌面软件包无法识别。应该给出500个错误,而不是550;但是有几个服务器使用错误550指示找不到文件,并且软件包认为您想要的文件是'sg1996text.txt;type=i'而不是'sig1996text.txt'。删除“;键入=i'并查看发生了什么