在设置了INTERNET_ACCESS等之后,我遇到了这个错误...
private class AsyncUpload extends AsyncTask<String, Void, Void>{
public void ftpUpload(){
FTPClient con = new FTPClient();
try
{
con.connect("ftp.194.90.81.149"); //here i recieve exception
//the exception is java.unknownhostexception
//java.net.UnknownHostException: Unable to resolve host "ftp.194.90.81.149": No address associated with hostname
if (con.login("username", "password"))
{
con.enterLocalPassiveMode();
String data = "test data";
ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
boolean result = con.storeFile("/test.jpg", in);
in.close();
if (result) Log.v("upload result", "succeeded");
}
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
con.logout();
con.disconnect();
}
catch (IOException e)
{
e.printStackTrace();
}
}
@Override
protected Void doInBackground(String... params) {
ftpUpload();
return null;
}
}
这是我测试过的另一部分代码,仍然出现了异常。
public class FTPFactory {
private FTPClient _ftpClient = null;
public boolean Connect(String host, String userName, String password, int port) throws IOException
{
try {
_ftpClient = new FTPClient();
// connecting to the host
_ftpClient.connect(host, port);
// now check the reply code, if positive mean connection success
if (FTPReply.isPositiveCompletion(_ftpClient.getReplyCode())) {
// login using username & password
boolean status = _ftpClient.login(userName, password);
return status;
}
} catch(IOException e) {
throw e;
}
return false;
}
public boolean Disconnect()
{
try {
_ftpClient.logout();
_ftpClient.disconnect();
return true;
} catch (Exception e) {
}
return false;
}
public boolean ChangeDirectory(String directoryPath)
{
try {
_ftpClient.changeWorkingDirectory(directoryPath);
} catch(Exception e) {
}
return false;
}
public String GetCurrentWorkingDirectory()
{
try {
String workingDir = _ftpClient.printWorkingDirectory();
return workingDir;
} catch(Exception e) {
}
return null;
}
public void PrintFilesList(String dirPath)
{
try {
FTPFile[] ftpFiles = _ftpClient.listFiles(dirPath);
int length = ftpFiles.length;
for (int i = 0; i < length; i++) {
String name = ftpFiles[i].getName();
boolean isFile = ftpFiles[i].isFile();
if (isFile) {
}
else {
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
public boolean MakeDirectory(String newDirPath)
{
try {
boolean status = _ftpClient.makeDirectory(newDirPath);
return status;
} catch(Exception e) {
}
return false;
}
public boolean RemoveDirectory(String dirPath)
{
try {
boolean status = _ftpClient.removeDirectory(dirPath);
return status;
} catch(Exception e) {
}
return false;
}
public boolean RemoveFile(String filePath)
{
try {
boolean status = _ftpClient.deleteFile(filePath);
return status;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public boolean RenameFile(String from, String to)
{
try {
boolean status = _ftpClient.rename(from, to);
return status;
} catch (Exception e) {
}
return false;
}
/**
* mFTPClient: FTP client connection object (see FTP connection example)
* srcFilePath: path to the source file in FTP server
* desFilePath: path to the destination file to be saved in sdcard
*/
public boolean Download(String srcFilePath, String desFilePath)
{
boolean status = false;
try {
FileOutputStream desFileStream = new FileOutputStream(desFilePath);;
status = _ftpClient.retrieveFile(srcFilePath, desFileStream);
desFileStream.close();
return status;
} catch (Exception e) {
}
return status;
}
/**
* mFTPClient: FTP client connection object (see FTP connection example)
* srcFilePath: source file path in sdcard
* desFileName: file name to be stored in FTP server
* desDirectory: directory path where the file should be upload to
*/
public boolean Upload(String srcFilePath, String desFileName, String desDirectory)
{
boolean status = false;
try {
FileInputStream srcFileStream = new FileInputStream(srcFilePath);
// change working directory to the destination directory
if (ChangeDirectory(desDirectory)) {
status = _ftpClient.storeFile(desFileName, srcFileStream);
}
srcFileStream.close();
return status;
} catch (Exception e) {
}
return status;
}
}