전에 비슷한 질문이 많이 있다는 것을 알고 있습니다. 나는 그것들 모두를 보았고 몇몇 FTP 서버를 변경하는 것을 포함한 모든 가능한 해결책을 시도했지만 여전히 나의 문제를 해결할 수 없었다. FTP 명령 줄에는 문제가 없습니다. 나는 또한 방화벽을 껐다. 여기 android FTPClient가 파일을 업로드 할 수 없습니다 - FTP 응답 421이 수신되었습니다. 서버 연결이 끊어졌습니다
ftpClient.login(username, password);
int mode = ftpClient.getDataConnectionMode();
if(mode == ftpClient.PASSIVE_LOCAL_DATA_CONNECTION_MODE)
ftpClient.enterLocalPassiveMode();
else if(mode == ftpClient.ACTIVE_LOCAL_DATA_CONNECTION_MODE)
ftpClient.enterLocalActiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
//ftpClient.setPassiveNatWorkaround(false);
if(LOGD) Log.d("before create out");
String out = orderToString();
if(LOGD) Log.d("out="+out);
InputStream stream = new ByteArrayInputStream(out.getBytes("UTF-8"));
if(LOGD) Log.d("before upload orders.xml");
boolean res = ftpClient.storeFile("orders.xml", stream);
if(!res) Log.d("store file failed");
ftpClient.completePendingCommand();
stream.close();
가 로그 캣입니다 : 여기 내 코드입니다
............................ ............
D/영업 매니저 (408) 밖으로 = D/영업 매니저 (408) : D/영업 매니저 (408 전 (408) D/영업 매니저를 만들) :
1 D/SalesManager (408) : 2013-10-06 12:07:39 D/SalesManager (408) : 1 D/SalesManager (408) : 617.25D/SalesManager (408) : D/SalesManager (408) : D/SalesManager (408) : orders.xml을 업로드하기 전에 D/SntpClient (60) : 요청 시간이 실패했습니다. java.net.SocketException : 주소 패밀리가 아닌 프로토콜 W/System.err (408)에서 지원됨 : org.apache.commons.net.ftp.FTPConnectionClosedException : FTP 응답 421이 수신되었습니다. 서버 연결이 닫혔습니다. D/SntpClient (60) : 요청 시간에 실패 java.net.SocketException의 : 주소 제품군은 프로토콜 MainActivity $ LoadAsyncTask.doInBackground (MainActivity.java:1) W/System.err에 (408)에 의해 지원되지 : 에서 android.os.AsyncTask $ 2.call (AsyncTask.java:185) W/System.err (408) :
at java.util.concurrent.FutureTask $ Sync. innerRun (FutureTask.java:305) W/System.err (408) : 에 있습니다. java.util.concurrent.FutureTask.run (FutureTask.java : 137) W/System.err (408) : at java.util .concurrent.ThreadPoolExecutor. runWorker (ThreadPoolExecutor.java:1068) W/System.err (408) : 에서 java.util.concurrent.ThreadPoolExecutor $ Worker. 런 (ThreadPoolExecutor.java:561) W/System.err에 (408) java.lang.Thread.run (Thread.java:1096)에서
.......... .............
EDIT 내가 텍스트 파일을 성공적으로 다운로드했으나 텍스트 파일을 업로드하지 않았습니다. 테스트 도중 한 번 텍스트 파일 반 업로드를 완료했습니다. 빈 이름 파일이 서버에 작성되었습니다.