FTP: 501 server cannot accept argument
Enviado: 27 Jul 2015 16:23
Olá Pessoal !
estou tentando fazer um download do ftp hospedado na locaweb tem hora que funciona tem hora que retorna o codigo de erro 501-Server cannot accept argument, alguem saberia me dizer porque desse erro ? Segue exemplo do fonte que estou usando:
Obs: Estou usando o Fwh 14.09 + xHarbour 1.2.3
estou tentando fazer um download do ftp hospedado na locaweb tem hora que funciona tem hora que retorna o codigo de erro 501-Server cannot accept argument, alguem saberia me dizer porque desse erro ? Segue exemplo do fonte que estou usando:
Obs: Estou usando o Fwh 14.09 + xHarbour 1.2.3
Código: Selecionar todos
Function Donwload_Precos()
LOCAL lRet:=.F., aLista:={}, aFiles:={}, nRow:=0, nTamanho, nVez:=1
LOCAL cFtpDir:="Dados\ATUPRECO", cFtpFile:="TkPrecos.zip", cFDestino
LOCAL cFtpServer, cFtpUser, cFtpPass, cUrl, oUrl, oFtp, oError, cStr
if !VerificaNet()
MsgStop("Sem comunicação com a internet","Atenção")
return .F.
endif
cFDestino := cPathSrv+cFtpFile
lMkDir("DBF")
FERASE(cFDestino)
FERASE(cPathSrv+"TKPRECOS.DBF")
TRY
WHILE .T.
cFtpServer := "186.202.149.46"
cFtpUser := "meu_usuario"
cFtpPass := "minha_senha"
cUrl := "ftp://"+cFtpUser+":"+cFtpPass+"@"+cFtpServer
oUrl := tUrl():New( cUrl )
oFtp := tIpClientFtp():New( oUrl, .T.)
oFTP:nDefaultPort := 21
oFTP:nConnTimeout := 30000
oFTP:nAccessMode := 0
oFTP:oUrl:cPath := "DADOS/ATUPRECO"
IF nVez == 1
oFtp:bUsePasv := .T.
ELSE
oFtp:bUsePasv := .F.
ENDIF
nVez++
IF At( "@", cFtpUser ) > 0
oFTP:oUrl:cServer := cFtpServer
oFTP:oUrl:cUserID := cFtpUser
oFTP:oUrl:cPassword := cFtpPass
Endif
IF oFTP:Open( cUrl )
// alterando a pasta
oFTP:oUrl:cPath := "Dados/ATUPRECO"
oFTP:Cwd("Dados/ATUPRECO") // muda o diretório
aFiles:=oFTP:ListFiles(cFtpFile)
IF LEN(aFiles) == 0 // Tive de repetir pois tem hora que não consegue listar o arquivo
aFiles:=oFTP:ListFiles(cFtpFile)
// MsgInfo( "LEN(aFiles)="+cSTR(LEN(aFiles))+CRLF+"cFtpFile="+cFtpFile+CRLF+"Retorno do FTP: "+oFtp:cReply, "2" )
ENDIF
IF LEN(aFiles) == 0 // Tive de repetir pois tem hora que não consegue listar o arquivo
aFiles:=oFTP:ListFiles(cFtpFile)
// MsgInfo( "LEN(aFiles)="+cSTR(LEN(aFiles))+CRLF+"cFtpFile="+cFtpFile+CRLF+"Retorno do FTP: "+oFtp:cReply, "3" )
ENDIF
IF LEN(aFiles) == 0 .AND. nVez <= 3
oFTP:Close()
oFTP:=oUrl:=NIL
LOOP
ENDIF
IF LEN(aFiles) > 0
nRow := ASCAN( aFiles, {|aArq| aArq[1]==cFtpFile } )
// MsgInfo( "LEN(aFiles)="+cSTR(LEN(aFiles))+CRLF+"nRow="+cSTR(nRow)+CRLF+"Retorno do FTP: "+oFtp:cReply, cVersao )
IF nRow > 0
aLista := aFiles
ENDIF
ENDIF
IF LEN(aLista) == 0 .AND. ;
MsgYesNo( "Arquivo de Preços não localizado no FTP !"+CRLF+CRLF+;
"Retorno do FTP: "+oFtp:cReply+CRLF+CRLF+;
"Deseja tentar de novo ?", cVersao )
nVez:=1
oFTP:Close()
oFTP:=oUrl:=NIL
LOOP
ENDIF
IF LEN(aLista) > 0
nRow:=IF( nRow==0, 1, nRow )
IF MsgYesNo( "Data do Arquivo no FTP: "+CRLF+CRLF+;
aLista[nRow][1]+" - "+DTOC(aLista[nRow][3])+" - "+ALLTRIM(TRANSFORM(aLista[nRow][2],"@E 999,999,999,999"))+" bytes"+CRLF+CRLF+;
"Deseja Continuar o Download?", cVersao )
nTamanho := aLista[nRow][2]
MsgMeter( { | oMeter, oText, oDlg, lEnd | ;
Baixando_Arq( oMeter, oText, oDlg, @lEnd, cFdestino, cFtpFile, nTamanho, oFTP ) },;
"Efetuando download do arquivo...", "Aguarde..." )
IF !FILE(cFDestino)
IF MsgYesNo( "Falha no Download do arquivo: "+CRLF+CRLF+;
cFtpfile+CRLF+CRLF+;
"Retorno do FTP: "+oFtp:cReply+CRLF+CRLF+;
"Deseja tentar de novo ?", cVersao )
nVez:=1
oFTP:Close()
oFTP:=oUrl:=NIL
LOOP
ELSE
lRet := .F.
ENDIF
ELSE
IF !Descomprime()
MsgStop( "Falha na descompactação do arquivo!"+CRLF+CRLF+;
"Tente mais tarde.", cVersao )
ELSE
lRet := .T.
ENDIF
ENDIF
ENDIF
ELSE
// Msginfo("Arquivo de Preços não localizado no FTP !", cVersao )
ENDIF
oFTP:CLOSE()
ELSE
cStr := "Não foi possivel conectar ao Ftp: " + oURL:cServer
IF oFTP:SocketCon == NIL
cStr += Chr( 13 ) + Chr( 10 ) + "Conexão não iniciada!"
ELSEIF InetErrorCode( oFTP:SocketCon ) == 0
cStr += Chr( 13 ) + Chr( 10 ) + "Resposta do Servidor:" + " " + oFTP:cReply
ELSE
cStr += Chr( 13 ) + Chr( 10 ) + "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon )
ENDIF
SysRefresh()
MsgStop(cStr + CRLF + CRLF + "Por favor tente mais tarde.", cVersao)
ENDIF
EXIT
ENDDO
CATCH oError
MsgStop("Falha na conexão, "+ ErrorMessage(oError), cVersao)
lRet := .F.
END
// oFTP:Quit()
RETURN lRet
FUNCTION Baixando_Arq( oMeter, oText, oDlg, lEnd, cFDestino, cFtpfile, nTamanho, oFTP )
// MsgInfo( "nTamanho="+cSTR(nTamanho)+CRLF+"nTamanho="+VALTYPE(nTamanho)+CRLF+"FDestino="+fDestino+CRLF+"FtpFile="+FtpFile, cVersao )
oMeter:nTotal := nTamanho
oFtp:exGauge := { | x, y| oMeter:Set( x ), SysRefresh(), !lEnd }
oFtp:DownLoadFile(cFdestino, cFtpFile)
RETURN nil