Página 1 de 1

FTP: 501 server cannot accept argument

Enviado: 27 Jul 2015 16:23
por Joao Cezar
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

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

FTP: 501 server cannot accept argument

Enviado: 30 Jul 2015 10:22
por Kapiaba
Bom dia, testei com FWH15.05 e não me gerou nenhum conflito. Veja imagem:

Imagem

Abs. :{

FTP: 501 server cannot accept argument

Enviado: 30 Jul 2015 10:31
por Kapiaba
João, em HARBOUR, quais são os comandos equivalentes?

Código: Selecionar todos

+----------------------------------------------------------------------------+
¦ FiveWin for Harbour 15.05 - Jun.  2015          Harbour development power  ¦_
¦ (c) FiveTech, 1993-2015   for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8 ¦¦
+----------------------------------------------------------------------------+¦
  ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Compiling...
Harbour 3.2.0dev (r1501292255)
Copyright (c) 1999-2015, http://harbour-project.org/
Compiling 'TESTE.prg' and generating preprocessed output to 'TESTE.ppo'...
Lines 4545, Functions/Procedures 3
Generating C source output to 'TESTE.c'... Done.
Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
teste.c:
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_TURL' referenced from C:\FWH1505\SAMPLES\TESTE.OBJ
Error: Unresolved external '_HB_FUN_TIPCLIENTFTP' referenced from C:\FWH1505\SAMPLES\TESTE.OBJ
* Linking errors *
Obg. abs.