Página 1 de 2

Barra de Progresso com TipClientHttp()

Enviado: 24 Jul 2012 21:08
por gilsonpaulo
Boa noite, consegui com pesquisa aqui no forum utilizar com sucesso a TipClientHttp().

Código: Selecionar todos

Function ver_update

	local oHttp, oExe, oEmpresa, oExecutavel, oUrl, oTamanho, oProgress
	
	use mat shared alias mat
	go top
	
	oEmpresa:= alltrim(mat->update)
	oExecutavel:= alltrim(mat->executavel)

	close mat
	
	oUrl := "http://www.gsinformatica.inf.br/"+oEmpresa+"/"+oExecutavel
	
	oHttp:= TipClientHttp():New( "http://www.gsinformatica.inf.br/"+oEmpresa+"/"+oExecutavel ) 
   
	oHttp:open()

	oExe := oHttp:readAll()
	
	oHttp:close()
	
	MemoWrit(oExecutavel,oExe)
	
	EXECUTE FILE oExecutavel
	Main.release
	
Return
Agora quero colocar uma barra de progresso neste download, mas não faço a minima ideia de como implementar.

Desde ja agradeço qualquer ajuda.

Barra de Progresso com TipClientHttp()

Enviado: 25 Jul 2012 23:43
por Abel
Ola,

nao consegui fazer usando a tip,
fiz pela wapi do maligno, conforme vai baixando vou verificando o tamanho do executavel baixado, e vou controlando a barra ...
da uma pesquisada na wapi tem muita coisa interessante, vc acha aqui no forum.
eu nao sei como colocar links aqui rs rs

Abel

Barra de Progresso com TipClientHttp()

Enviado: 31 Jul 2012 07:46
por sygecom
Procure por:
:exGauge

Exemplo:

Código: Selecionar todos

function main()
cURL:='www.meusite.com.br/arquivo.exe'
nTAMANHO:= 121222  // tamanho do arquivo no site
oConn := TipClientHttp():New(TURL():New(cURL))
oConn:nConnTimeout := 10000
oConn:exGauge := { | done, size| ShowGauge(done, size, nTAMANHO, ftpfile, oBar, oSAY ) }
return nil

****************************************************************
PROCEDURE SHOWGAUGE( nSent, nSize, wTotal, ftpfile, oBar, oSAY )
****************************************************************
IF nSent > 0
   hwg_processmessage() // uso com Hwgui
   eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} ) // uso com Hwgui

   oSAY:SetText("Arquivo...: " +ftpfile+" "+ STR(nSent/1000000)+" Mb de: " + str(wTotal/1000000)+ " Mb "+str((nSent/wTotal)*100,4) +" %")  // uso com Hwgui
   oSAY:Refresh()  // uso com Hwgui
ENDIF
RETURN
Se ficar alguma duvida post aqui.

Barra de Progresso com TipClientHttp()

Enviado: 18 Dez 2012 00:12
por Abel
Ola, Leornado.

Como no post acima, eu tinha feito minha rotina de download pelo wapi do maligno,
mas agora q atualizei os clientes, to tento um problema.

Muitos antivirus bloqueiam o EXE nao conseguindo fazer o download.

Vi a rotina pelo HTTP, e deu certo, mas nao consegui gerar a barra de progresso como no exemplo acima. Eu utilizo harbour 3.1 nigthy.

nao utilizo hwgui, sera que é por isso q nao deu certo.

ficou assim:

Código: Selecionar todos

PROCEDURE SHOWGAUGE( nSent, nSize, wTotal, ftpfile, oBar, oSAY )
rN_T=1
//IF nSent > 0
   @ 0,rN_T++ SAY 'A' //hwg_processmessage() // uso com Hwgui
   eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} ) // uso com Hwgui

   oSAY:SetText("Arquivo...: " +ftpfile+" "+ STR(nSent/1000000)+" Mb de: " + str(wTotal/1000000)+ " Mb "+str((nSent/wTotal)*100,4) +" %")  // uso com Hwgui
   oSAY:Refresh()  // uso com Hwgui
//ENDIF
RETURN

Barra de Progresso com TipClientHttp()

Enviado: 19 Dez 2012 00:49
por Abel
ola, pessoal,
consegui fazer funcionar a showgauge para exibir uma barra de progresso durante o download utilizando tipclienthttp.

Código: Selecionar todos

   oHttp:= TipClientHttp():New(TURL():New(rA_URL)) 
   oHttp:nConnTimeout := 20000
   //
   oHttp:Open()
   oHttp:exGauge := { |done, size| ShowGauge(done, size, ntamanho) } 
   oHttp:ReadToFile( rA_NOMEEXE ) // esta linha resolveu tudo
   oHttp:close()
Minha duvida é a seguinte:
- usando HTTP: pode acontecer de algum antivirus barrar o download ?

- quando eu usava a wapi.exe do maligno alguns antivirus removiam o EXE, ou ate mesmo abriam um popup indicando a wapi.exe como arquivo suspeito, e agora sera que tem algum perigo do antivirus remover o EXE do meu programa, ja que agora faço direto do sistema ?


Abraços,
ABEL

Barra de Progresso com TipClientHttp()

Enviado: 26 Dez 2012 20:10
por sygecom
Olá Abel,
Abel escreveu: Minha duvida é a seguinte:
- usando HTTP: pode acontecer de algum antivirus barrar o download ?
Pode barrar sim, e se usar muitas vez o HTTP abrindo e fechando em pouco tempo algumas hospedagem bloqueiam o IP que está tentando fazer isso por alguns minutos, um exemplo é a KingHost que faz esse procedimento, digo isso por que já passei por algo assim, agora zipei em pacotes em vez de baixar arquivo por arquivo.
- quando eu usava a wapi.exe do maligno alguns antivirus removiam o EXE, ou ate mesmo abriam um popup indicando a wapi.exe como arquivo suspeito, e agora sera que tem algum perigo do antivirus remover o EXE do meu programa, ja que agora faço direto do sistema ?
Por isso nunca passei, quando aconteceu de remover meu EXE foi por algum virus se instalar dentro da pasta do meu sistema, ai o anti-virus foi lá e exclui todos os EXE da pasta onde estava o virus.

Barra de Progresso com TipClientHttp()

Enviado: 27 Dez 2012 11:51
por Abel
sygecom,

agora q estou aprendendo a utilizar melhor alguns recursos do harbour,
acho q o melhor é baixar por HTTP do que pelo wapi.exe, nao é ?
pois HTTP usa a porta 8080 é mais facil de passar pelo firewall e pelos antivirus.

eu tb estou zipando os arquivos e apos baixar, descompacto.

abracos e um otimo ano novo,
ABEL

Barra de Progresso com TipClientHttp()

Enviado: 27 Dez 2012 12:57
por sygecom
Com certeza usando pela TIP.LIB fica melhor, mais profissional e pega os retornos caso de algum problema...

Parte do meu código:

Código: Selecionar todos

   TRY
     oConn := TipClientHttp():New(TURL():New(cURL))
     oConn:nConnTimeout := 10000
     oConn:exGauge := { | done, size| ShowGauge(done, size, nTAMANHO, ftpfile, oBar, oSAY ) }

     IF oConn:Open(cURL)
        oConn:ReadToFile(fdestino,,nFileSize)
        oConn:Close()
     ENDIF
     lRet:=.T.
   CATCH
     lRet:=.F.
   END

//showmsg(lRet)

   oSAY:SetText('Aguarde, Conferindo arquivo baixado...')
   oSAY:Refresh()


   IF lRet
      IF FILE(fdestino)
         cCONFERE:=MEMOREAD(fdestino)
         IF AT('<html>',cCONFERE)>0 .AND. AT('</html>',cCONFERE)>0
            IF AT('Erro 403',cCONFERE)>0 .OR.;  // acesso negado
               AT('Erro 404',cCONFERE)>0 .OR.;  // pagina não encontrada
               AT('Erro 500',cCONFERE)>0 .OR.;  // Erro Interno de Servidor
               AT('Página Não Encontrada',cCONFERE)>0 // pagina não encontrada

               FERASE(fdestino) // EXCLUI POR BAIXOU COM PROBLEMA
               lRet:=.F.
            ENDIF
         ENDIF
      ELSE
         lRet:=.F.
      ENDIF
   ENDIF

Barra de Progresso com TipClientHttp()

Enviado: 28 Dez 2012 11:04
por Abel
tenho uma duvida antiga, que inclusive vendo seu codigo e melhorando o meu
voltou a dar. Pq os comandos TRY, CATCH, END nao compilam no meu harbour.

da erro:
" syntax error at 'end' "

se eu retirar o END da:
ERROR e0020 incomplete statement or unbalanced delimiters

utilizo o harbour 3.1 nigthy

Abracos,
ABEL

Barra de Progresso com TipClientHttp()

Enviado: 28 Dez 2012 12:02
por sygecom
Olá Abel,

Esses comandos são do xHarbour e o Harbour implantou isso em: hbcompat.ch, então se você incluir no cabeçalho do seu .PRG a linha:
#include "hbcompat.ch"
Deve resolver com a linha acima, apenas certifique se o .CH está em suas pastas de INCLUDE, por que originalmente acho que está na pasta \HARBOUR\CONTRIB\XHB

Esse TRY, CATCH é equivalente que tinhamos no CLIPPER:
BEGIN SEQUENCE
<statements>...
IF lBreakCond
BREAK
ENDIF
RECOVER
<recovery statements>...
END

Barra de Progresso com TipClientHttp()

Enviado: 05 Jan 2013 13:51
por Abel
puxa legal,
nunca usei begin sequence mas pelo visto é muito interessante,
coloquei o #include "hb_compat.ch" e compilou normalmente,
minha duvida foi a seguinte:

tinha um outro prg que tb adaptei para usar try catch e tambem tive que colocar o include neste prg pq dava erro. Existe alguma forma de coloca-lo apenas uma vez e utilizar o comando try em qualquer prg do projeto ?

Abracos e desde ja agradeço toda a atencao,
ABEL

Barra de Progresso com TipClientHttp()

Enviado: 05 Jan 2013 15:48
por Abel
sygecom,
fazendo alguns testes com os novos comandos que estou aprendendo a usar
nao estou conseguindo fazer os devidos testes, veja:
BEGIN SEQUENCE
oUrl = TUrl():New( cUrl ) //

// nenhuma url q eu coloque faz com que ele entre no empty
// ate mesmo url que nao existe

IF EMPTY( oUrl )
ALERT2('PROBLEMA 1')
BREAK
ENDIF
oCli = TIpClientHttp():New( oUrl )
//
// aqui tambem ele nunca entre no IF abaixo
//
IF EMPTY( oCli )
ALERT2('PROBLEMA 2')
BREAK
ENDIF
oCli:nConnTimeout = 20000

IF !oCli:Open( oUrl ) // ate mesmo com URL inexistente nao exibe a msg
ALERT2('PROBLEMA 3')
BREAK
ENDIF

cRes := oCli:Read()
oCli:Close()
END SEQUENCE
porque sera que ele nunca exibe as mensagens de problema uma vez que a url nem existe ?

Agradeço mais uma vez,
ABEL

Barra de Progresso com TipClientHttp()

Enviado: 05 Jan 2013 20:21
por HASA
:-O
Boa noite, desculpe cair de paraquedas no post, mas... os exemplos acima são para MINIGUI ou Hwgui ? Me parecem ser para HWGUI, se for mesmo tem algum exemplo para Minigui ?
:xau
HASA

Barra de Progresso com TipClientHttp()

Enviado: 11 Jan 2013 12:02
por HASA
:(
Olá pessoal, ninguem tem um pequeno sample ?
:-O
Hasa

Barra de Progresso com TipClientHttp()

Enviado: 13 Jan 2013 09:40
por Toledo
Veja este pequeno exemplo:

Código: Selecionar todos

#include "hmg.ch"

Function Main

   DEFINE WINDOW Form_1 ;
          AT 0,0 ;
          WIDTH 530 HEIGHT 154 ;
          TITLE "Exemplo de Barra de Progresso com TipClientHttp" ;
          MAIN

          @ 10,10 BUTTON Button_1 ;
                  CAPTION "Copiar Arquivo" ;
                  ACTION {|| Copiar_Arquivo()} ;
                  WIDTH 100 ;
                  HEIGHT 28

          @ 70,10 PROGRESSBAR Progress_1 ;
                  RANGE 0 , 100 ;
                  WIDTH 500 ;
                  HEIGHT 30

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return

Function Copiar_Arquivo()
cUrl:='https://pctoledo.org/temp/clipper_v52e.zip'
oHttp := TipClientHttp():New(cUrl)
oHttp:nConnTimeout := 20000
nTamanhoArquivo:=2268297
oHttp:exGauge := { | nSent, nTotal | HttpProgress(nSent, nTotal, nTamanhoArquivo) }
IF oHttp:Open(cUrl)
   cArq:=oHttp:oUrl:cFile
   oHttp:ReadToFile(cArq)
   oHttp:Close()
   MsgInfo("Arquivo copiado com sucesso!")
ENDIF
Return Nil

Function HttpProgress(nSent, nTotal, nTamanhoArquivo)
if nSent>0
 Form_1.Progress_1.Value:=((nSent/nTamanhoArquivo)*100)
endif
return .t.
Abraços,