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,