Baixar um arquivo da Internet
Moderador: Moderadores
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Baixar um arquivo da Internet
Bom dia colegas.
Preciso baixar um arquivo de um determinado endereço da internet, e estou com dificuldades.
O endereço:
"https://treinamento.olostech.com.br/ips ... ac=4772509"'
O resultado é um pequeno arquivo XML que deve ser gravado no HD.
Alguém pode me indicar o caminho ?
Agradeço de antemão.
Preciso baixar um arquivo de um determinado endereço da internet, e estou com dificuldades.
O endereço:
"https://treinamento.olostech.com.br/ips ... ac=4772509"'
O resultado é um pequeno arquivo XML que deve ser gravado no HD.
Alguém pode me indicar o caminho ?
Agradeço de antemão.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Baixar um arquivo da Internet
c_URL := "https://treinamento.olostech.com.br/ips ... ac=4772509"
oHttp := TIpClientHttp():new( c_URL )
oHttp:nConnTimeout := 20000
if ! oHttp:open()
? "Erro de conexao: "+oHttp:lastErrorMessage()
quit
endif
cResultado := oHttp:readAll()
oHttp := TIpClientHttp():new( c_URL )
oHttp:nConnTimeout := 20000
if ! oHttp:open()
? "Erro de conexao: "+oHttp:lastErrorMessage()
quit
endif
cResultado := oHttp:readAll()
João Bosco
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Baixar um arquivo da Internet
Boa tarde JBSantos
Obrigado pelo teu retorno, mas a tua rotina gerou o erro abaixo:
Error BASE/1081 Operation not supported:
TIPCLIENTHTTP:new() Arguments: ( [ 1] = Type: O Val: {
TIPCLIENTHTTP Object } [ 2] = Type: C Val: https)
Quit
No manual ainda segue uma recomendação como à seguir:
=================================
A url de conexão com o webservice no ambiente de homologação é: https://treinamento.olostech.com.br/ips ... 2.ipso.asp
Conforme descrito no manual a partir da página 11, o comando sugerido para fazer essa conexão é:
curl -k --data "user=xxx&pwd=xxx&service=1&numpac=xxx" https://treinamento.olostech.com.br/ips ... .ipso.asp;
Informando nas variáveis "user" e "pwd" as credenciais que enviei no e-mail anterior (usuário: labjaraguá / senha:123456);
A variável "service", nesse caso será 1, pois estamos fazendo uma consulta. E por fim, temos a variável "numpac" onde será informado o número da autorização;
Se a conexão for bem sucedida, o sistema irá lhe retornar o xml para ser importado:
================================
Na citada página 11 temos somente as outras opções de serviços disponíveis. Para baixar o XML o serviço é 1.
Obrigado pelo teu retorno, mas a tua rotina gerou o erro abaixo:
Error BASE/1081 Operation not supported:
TIPCLIENTHTTP:new() Arguments: ( [ 1] = Type: O Val: {
TIPCLIENTHTTP Object } [ 2] = Type: C Val: https)
Quit
No manual ainda segue uma recomendação como à seguir:
=================================
A url de conexão com o webservice no ambiente de homologação é: https://treinamento.olostech.com.br/ips ... 2.ipso.asp
Conforme descrito no manual a partir da página 11, o comando sugerido para fazer essa conexão é:
curl -k --data "user=xxx&pwd=xxx&service=1&numpac=xxx" https://treinamento.olostech.com.br/ips ... .ipso.asp;
Informando nas variáveis "user" e "pwd" as credenciais que enviei no e-mail anterior (usuário: labjaraguá / senha:123456);
A variável "service", nesse caso será 1, pois estamos fazendo uma consulta. E por fim, temos a variável "numpac" onde será informado o número da autorização;
Se a conexão for bem sucedida, o sistema irá lhe retornar o xml para ser importado:
================================
Na citada página 11 temos somente as outras opções de serviços disponíveis. Para baixar o XML o serviço é 1.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Baixar um arquivo da Internet
Olá!
A lib hbTip não suporta o protocolo https. Tente usar cUrl.
A lib hbTip não suporta o protocolo https. Tente usar cUrl.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Baixar um arquivo da Internet
Veja se esse exemplo ajuda
Da uma olhada no código, ele não cai funcionar de cara porque tem umas funções minha. Eu tô no celular, fiz só copiar e colar do meu repositório. Pra editar fica difícil e podia errar.
Não esqueça de colocar
#require "hbcurl"
Código: Selecionar todos
*****************************/
FUNCTION __DownloadHTTP( cRemoteFile , lOverwrite , cNewName )
LOCAL hCurl
LOCAL cContent, cFileName
LOCAL lDownload
local aHeaders
#ifdef __PLATFORM__WINDOWS
LOCAL cTempDir := ""//GetEnv("TEMP")
#else
LOCAL cTempDir := ""//IIF( hb_DirExists( "/tmp/" ) , "/tmp/" , "./" )
#endif
IF cNewName == NIL
cFileName := HB_FNameName( cRemoteFile ) + HB_FNameExt( cRemoteFile )
Else
cFileName := cNewName
ENDIF
IF FILE( cFileName ) // Se o arquivo já existe
IF lOverwrite // Se é para sobrepor sempre
lDownload := .t.
ELSE
lDownload := .f.
ENDIF
ELSE // Se não existe é para baixar
lDownload := .t.
ENDIF
IF lDownload
curl_global_init()
if ! empty( hCurl := curl_easy_init() )
aHeaders := { "Cache-Control: no-cache" }
curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeaders)
curl_easy_setopt( hCurl, HB_CURLOPT_URL, cRemoteFile )
//Disabling the SSL peer verification (you can use it if you have no SSL certificate yet, but still want to test HTTPS)
curl_easy_setopt(hCurl, HB_CURLOPT_FOLLOWLOCATION, 1)
curl_easy_setopt(hCurl, HB_CURLOPT_SSL_VERIFYPEER, 0)
curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )
//Sending the request and getting the response
IF (curl_easy_perform( hCurl )) == 0
cContent := curl_easy_dl_buff_get( hCurl )
cFileName := hb_PathJoin( cTempDir, cFileName )
LOG _t( "Downloading to %s", cFileName ) INFO DISPLAY
IF .NOT. hb_MemoWrit( cFileName , cContent )
LOG _t( "Error when writing %s", cFileName ) INFO DISPLAY
ENDIF
ELSE
LOG _t( "Download failed." ) ERROR DISPLAY
IF FILE( cFileName )
?? " Using local version."
ENDIF
ENDIF
ENDIF
ENDIF
RETURN cFileName
Não esqueça de colocar
#require "hbcurl"
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Baixar um arquivo da Internet
Bom dia.
Testei exaustivamente este último exemplo:
1)-Se uso: #require "hbcurl"
Resposta de erro ao compilar: TST_OLOS_2.PRG(4) Error F0032 Invalid name follows #
2)-Se uso: #include "hbcurl.ch"
Resposta de erro ao compilar: TST_OLOS_2.PRG(6) Error F0029 Can't open #include file: 'hbcurl.ch'
3)-Se uso: #include "C:\xHarbour\contrib\hbcurl\hbcurl.c"
Resposta de erro ao compilar: C:\xHarbour\contrib\hbcurl\hbcurl.c(51) Error F0029 Can't open #include file: 'windows.h'
OBS: procurei este arquivo "windows.h" e não encontrei para testar com o path incluso.
4)-Se uso: #include "C:\xHarbour\contrib\hbcurl\hbcurl.ch"
Resposta de erro ao compilar:
C:\BCC55\BIN\ilink32 @makefile.lnk
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_HB_FNAMENAME' referenced from F:\DEV\PROLAZ1
\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_HB_FNAMEEXT' referenced from F:\DEV\PROLAZ1\
OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_GLOBAL_INIT' referenced from F:\DEV\PRO
LAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_INIT' referenced from F:\DEV\PROLA
Z1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_SETOPT' referenced from F:\DEV\PRO
LAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_PERFORM' referenced from F:\DEV\PR
OLAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_DL_BUFF_GET' referenced from F:\DE
V\PROLAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_HB_PATHJOIN' referenced from F:\DEV\PROLAZ1\
OBJ\TST_OLOS_2.OBJ
Testei exaustivamente este último exemplo:
1)-Se uso: #require "hbcurl"
Resposta de erro ao compilar: TST_OLOS_2.PRG(4) Error F0032 Invalid name follows #
2)-Se uso: #include "hbcurl.ch"
Resposta de erro ao compilar: TST_OLOS_2.PRG(6) Error F0029 Can't open #include file: 'hbcurl.ch'
3)-Se uso: #include "C:\xHarbour\contrib\hbcurl\hbcurl.c"
Resposta de erro ao compilar: C:\xHarbour\contrib\hbcurl\hbcurl.c(51) Error F0029 Can't open #include file: 'windows.h'
OBS: procurei este arquivo "windows.h" e não encontrei para testar com o path incluso.
4)-Se uso: #include "C:\xHarbour\contrib\hbcurl\hbcurl.ch"
Resposta de erro ao compilar:
C:\BCC55\BIN\ilink32 @makefile.lnk
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_HB_FNAMENAME' referenced from F:\DEV\PROLAZ1
\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_HB_FNAMEEXT' referenced from F:\DEV\PROLAZ1\
OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_GLOBAL_INIT' referenced from F:\DEV\PRO
LAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_INIT' referenced from F:\DEV\PROLA
Z1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_SETOPT' referenced from F:\DEV\PRO
LAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_PERFORM' referenced from F:\DEV\PR
OLAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_CURL_EASY_DL_BUFF_GET' referenced from F:\DE
V\PROLAZ1\OBJ\TST_OLOS_2.OBJ
Error: Unresolved external '_HB_FUN_HB_PATHJOIN' referenced from F:\DEV\PROLAZ1\
OBJ\TST_OLOS_2.OBJ
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Baixar um arquivo da Internet
Se não me engano, na geração do harbour deve inclui-la para que possa ser usado nos programas gerados com ele.
Tente assim:
Tente assim:
Código: Selecionar todos
//--url de consulta
cURL="https://treinamento.olostech.com.br/ipso/controle_v1.2.ipso.asp?user=labjaragua&pwd=123456&service=1&numpac=4772509"
//--caso precise enviar algo no body
cJSON=""
//--define o metodo HTTP use conforme a API ou url solicita, geralmente, será GET
cMetodo="GET"
//--cria o servidor HTTP local
oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0" )
oServer:Open( cMetodo, cURL, .F. )
//--caso precise setar header
*oServer:SetRequestHeader( "Accept","application/json")
*oServer:SetRequestHeader( "Content-Type","application/json")
//--envia url ao servidor
oServer:Send( cJSON )
//--retorno da url
cRetorno := oServer:ResponseBody() Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
Baixar um arquivo da Internet
Olá;
Já tentou usar um programinha chamado "wget" que funciona em linha de comando.
Testei com Windows 10 Pro de 64 bits e o resultado foi este :
Código
Já tentou usar um programinha chamado "wget" que funciona em linha de comando.
Testei com Windows 10 Pro de 64 bits e o resultado foi este :
Código: Selecionar todos
<?xml version='1.0' encoding='ISO-8859-1'?><ipso><status><codigo type='varchar(10)'>E102</codigo><servico type='integer'>1</servico><numpac type='bigint'>4772509</numpac><versao type='varchar(7)'>1.2</versao></status></ipso>
Código: Selecionar todos
//
LOCAL cCommand := 'wget -O arquivo_de_saida.XML --no-check-certificate "https://treinamento.olostech.com.br/ipso/controle_v1.2.ipso.asp?user=labjaragua&pwd=123456&service=1&numpac=4772509"'
RUN (cCommand)
//
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
Baixar um arquivo da Internet
No navegador Edge

HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Baixar um arquivo da Internet
Caro Vander.
Sim, no navegador carrega normalmente, porém preciso que o arquivo seja salvo no HD automaticamente, pois são uns 20 a 30 arquivos diários.
Estes arquivos devem ser gravados no HD, lidos, tratados e gravados no sistema local.
Sim, no navegador carrega normalmente, porém preciso que o arquivo seja salvo no HD automaticamente, pois são uns 20 a 30 arquivos diários.
Estes arquivos devem ser gravados no HD, lidos, tratados e gravados no sistema local.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
Baixar um arquivo da Internet
O "wget" baixa o arquivo e pode ser salvo em qualquer pasta e o nome do arquivo de origem e destino podem ser uma Variável.
LOCAL cCommand := 'wget -O arquivo_de_saida.XML --no-check-certificate "https://treinamento.olostech.com.br/ips ... ac=4772509"'
LOCAL cCommand := 'wget -O arquivo_de_saida.XML --no-check-certificate "https://treinamento.olostech.com.br/ips ... ac=4772509"'
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Baixar um arquivo da Internet
OK.
Beleza.
Funcionou perfeito com o wget.
Obrigado a TODOS que me auxiliaram direta ou inderetamente.
Beleza.
Funcionou perfeito com o wget.
Obrigado a TODOS que me auxiliaram direta ou inderetamente.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Baixar um arquivo da Internet
Uso a solução que postei sem problemas com o Harbour 3.2 compilado com suporte a cUrl. Uso o mingw para compilar. No Linux uso gcc. Faz tempo que abandonei o xharbour e o bcc. Talvez não tenha suporte a cUrl. Nesse caso é melhor usar o wget.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Baixar um arquivo da Internet
Só para deixar registrado, funciona com xHarbour+BCC, estamos usando aqui.Vlademiro escreveu:Uso a solução que postei sem problemas com o Harbour 3.2 compilado com suporte a cUrl. Uso o mingw para compilar. No Linux uso gcc. Faz tempo que abandonei o xharbour e o bcc. Talvez não tenha suporte a cUrl. Nesse caso é melhor usar o wget.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Baixar um arquivo da Internet
Se for no window, tenta este, não precisa incluir nenhuma biblioteca.
set retornar string vazia, deu erro no download
ou passe lErro por referencia
Código: Selecionar todos
FUNCTION Download_WinHttpRequest( sUrl, lErro )
LOCAL oOle, sTexto
lErro := .F.
BEGIN SEQUENCE WITH Break()
sTexto := "ERRO: CreateObject(WinHttp.WinHttpRequest.5.1)"
IF ( oOle := win_oleCreateObject( "WinHttp.WinHttpRequest.5.1" ) ) != NIL
sTexto := 'ERRO: Open(GET) [' + sUrl + ']'
oOle:Open( "GET", sUrl, .F. )
sTexto := 'ERRO: Send() [' + sUrl + ']'
oOle:Send()
//sTexto := "ERRO: readyState"
//WHILE oOle:readyState <> 4
// oOle:waitForResponse( 1000 )
//ENDDO
sTexto := 'ERRO: Status [' + sUrl + ']'
IF oOle:Status() == 200
sTexto := oOle:responseBody
ELSE
sTexto := 'ERRO: WinHttp.WinHttpRequest.5.1 STATUS: ' + NTrim(oOle:Status()) + ' [' + sUrl + ']'
lErro := .T.
ENDIF
ELSE
sTexto := 'ERRO: CreateObject(WinHttp.WinHttpRequest.5.1) [' + win_oleErrorText() + '] [' + sUrl + ']'
lErro := .T.
ENDIF
RECOVER
IF Empty(sTexto) .or. Left(sTexto, 5) <> 'ERRO:'
//sTexto := 'ERRO: ao baixar; [' + sUrl + ']'
sTexto := ''
ENDIF
lErro := .T.
END SEQUENCE
RETURN sTexto
ou passe lErro por referencia
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000

