您的IP不允许连接

时间:2018-06-20 12:09:30

标签: java android ftp

错误

06-20 12:03:36.630 23124-23124/com.example.admin.demoasync W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5839)
        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:1113)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:879)
    java.lang.IllegalStateException: Client not connected
        at it.sauronsoftware.ftp4j.FTPClient.disconnect(FTPClient.java:1123)
        at com.example.admin.demoasync.Main4Activity.uploadFile(Main4Activity.java:66)
        at com.example.admin.demoasync.Main4Activity$2.onClick(Main4Activity.java:46)
        at android.view.View.performClick(View.java:4848)
        at android.view.View$PerformClick.run(View.java:20300)
        at android.os.Handler.handleCallback(Handler.java:815)
        at android.os.Handler.dispatchMessage(Handler.java:104)
        at android.os.Looper.loop(Looper.java:210)
        at android.app.ActivityThread.main(ActivityThread.java:5839)
        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:1113)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:879)

it.sauronsoftware.ftp4j.FTPException [code=550, message= No connections allowed from your IP]

代码

public void uploadFile(File fileName)
    {
        FTPClient client = new FTPClient();
        try
        {
            client.connect(FTP_HOST,21);
            client.login(FTP_USER, FTP_PASS);
            client.setType(FTPClient.TYPE_BINARY);
            client.changeDirectory("/PODTrack/Photo/");
            client.upload(fileName, new MyTransferListener());
        } catch (Exception e)
        {
            e.printStackTrace();
            try
            {
                client.disconnect(true);
            } catch (Exception e2)
            {
                e2.printStackTrace();
            }
        }
    }

我们的IP没有被阻止。我可以通过另一个FTP客户端访问它。

1 个答案:

答案 0 :(得分:0)

仔细查看堆栈跟踪。看看引发异常的方法是什么?是disconnect

正在发生的事情是您的try块中的 something 抛出了 some 异常。您正在捕获该异常,并尝试断开连接。但是disconnect()调用失败,并显示消息失败,因为client未连接(!)

因此,较早的client.connect(...)呼叫失败,或者该呼叫断开之后。 (登录可能会失败吗?)

解决方案将分为两部分:

  1. 更改

      client.disconnect(true);
    

      if (client.isConnected()) {
          client.disconnect(true);
      }
    

    这将解决如果您调用disconnect()并且当前未打开连接时发生的烦人的次要异常。

  2. 在堆栈跟踪中查找原始异常,以查看是否有任何线索。

如果您可以使用与运行Java代码相同的IP的命令行客户端访问FTP服务器,则:

  • 检查是否在正确的端口上连接到正确的服务器。 (我认为这不是用户名和密码……但是stacktrace会告诉您!)

  • 请检查这与使用不同FTP代理的Android Java代码和FTP客户端无关。 (如果您是在Java(tm)平台上运行的,则可能是这个原因,但对于Android(tm),我不知道。)