2015-06-22 73 views
-2

您好我一直试图获得一个简单的FTP连接来传输一个小的XML文件。我已经尝试了很多不同的代码示例,但似乎都出现了相同的错误。Android的FTP连接问题

主要FTP类代码:

public class MyFTPClientFunctions { 
 

 
    public FTPClient mFTPClient = null; 
 

 
    public boolean ftpConnect(String host, String username, String password, int port) { 
 
     try { 
 
       mFTPClient = new FTPClient(); 
 
       // connecting to the host 
 
       mFTPClient.connect(host, port); 
 
      // now check the reply code, if positive mean connection success 
 
      if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) { 
 
       // login using username & password 
 
       boolean status = mFTPClient.login(username, password); 
 

 
       mFTPClient.setFileType(FTP.BINARY_FILE_TYPE); 
 
         mFTPClient.enterLocalPassiveMode(); 
 
       \t \t \t return status; 
 
      } 
 

 
     //Log.d(TAG, "Error: could not connect to host " + host); 
 
     } catch (SocketException e) { 
 
      e.printStackTrace(); 
 

 
     } catch (IOException e) { 
 
      e.printStackTrace(); 
 
     } 
 
     return false; 
 
    } 
 

 
    private Context getApplicationContext() { 
 
     return null; 
 
    } 
 

 

 
}

主要活动代码发送

send.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       //set up FTP file transfer here 
 

 
       MyFTPClientFunctions ftpSend = new MyFTPClientFunctions(); 
 

 
       ftpSend.ftpConnect("xxxxxx.asuscomm.com","admin","xxxxxxxxxx",21); 
 

 
      }

logcat的消息

06-22 12:09:21.460 17329-17329/com.example.rats.moham_2 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
 
    Process: com.example.rats.moham_2, PID: 17329 
 
    android.os.NetworkOnMainThreadException 
 
      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147) 
 
      at java.net.InetAddress.lookupHostByName(InetAddress.java:418) 
 
      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 
 
      at java.net.InetAddress.getByName(InetAddress.java:305) 
 
      at org.apache.commons.net.SocketClient.connect(SocketClient.java:203) 
 
      at com.example.rats.moham_2.MyFTPClientFunctions.ftpConnect(MyFTPClientFunctions.java:25) 
 
      at com.example.rats.moham_2.MainActivity$3.onClick(MainActivity.java:155) 
 
      at android.view.View.performClick(View.java:4780) 
 
      at android.view.View$PerformClick.run(View.java:19866) 
 
      at android.os.Handler.handleCallback(Handler.java:739) 
 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
 
      at android.os.Looper.loop(Looper.java:135) 
 
      at android.app.ActivityThread.main(ActivityThread.java:5257) 
 
      at java.lang.reflect.Method.invoke(Native Method) 
 
      at java.lang.reflect.Method.invoke(Method.java:372) 
 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

+1

获取例外名称和** GOOGLE **为它... – Selvin

回答

0

此异常usualy抛出,如果您使用的是网络的主线程上。 请使用异步任务。