leitura de página da internet via Harbour
Enviado: 24 Jul 2021 12:38
Certamente o problema é no meu código, porque o dele também funcionou aqui.
O problema é achar onde está o erro no meu código.
Veja: testei o código dele do jeito que ele me mandou, funcionou perfeitamente.
Mas o problema é que preciso de um código genérico, que pegue a cotação de todos os papeis, não apenas da PETR3 (como está no dele).
Testei fazer uma mudança apenas no código dele, para transformar em genérico, e daí já não funciona. Veja:
Note que eu só mudei estas linhas:
Tem algo errado aí? Não consigo ver nada errado.
Agora está dando erro na conexão com o site. Mas antes conectava sem problema, mas não retornava o valor correto.
O problema é achar onde está o erro no meu código.
Veja: testei o código dele do jeito que ele me mandou, funcionou perfeitamente.
Mas o problema é que preciso de um código genérico, que pegue a cotação de todos os papeis, não apenas da PETR3 (como está no dele).
Testei fazer uma mudança apenas no código dele, para transformar em genérico, e daí já não funciona. Veja:
Código: Selecionar todos
buscacotacao("PETR3")
#xcommand TRY => BEGIN SEQUENCE WITH {|o| break(o)}
#xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
Function buscacotacao(cot)
Cls
@ 12, 40 Say 'Aguarde'
Try
oServer:= win_OleCreateObject("MSXML2.ServerXMLHTTP.6.0")
Catch
alert('Erro na Criação do Serviço')
Return .f.
End
Try
oServer:Open( "GET", 'https://finance.yahoo.com/quote/'+cod+'.SA/', .f. )
oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
oServer:SetRequestHeader( "Connection", "keep-alive" )
oServer:Send()
oServer:WaitForResponse( 100000 )
Catch
alert('Erro na Conexão com o Site')
Return .f.
End
cHtml:= oServer:ResponseBody
@ 12, 40 Say ' '
MemoWrit('siteA.txt', cHtml)
nIni := At('" window.rapidInstance = new window.YAHOO.i13n.Rapid(rapidConfig);', cHtml)
cHtml1:= SubStr( cHtml, nIni)
nIni := At('" data-reactid="30"><span', cHtml1)
cHtml1:= SubStr( cHtml1, nIni)
nIni := At('D(ib)" data-reactid="31">', cHtml1) + 25
cHtml:= SubStr( cHtml1, nIni)
nFim := At('</span>', cHtml) - 1
cValor:= SubStr(cHtml1, nIni, nFim)
nIni := At('" data-reactid="32">', cHtml) + 20
cHtml1:= SubStr( cHtml, nIni)
nFim := At('</span>', cHtml1) - 1
cIndice:= SubStr(cHtml, nIni, nFim)
alert('Petroleo Brasileiro S.A. - Petrobras (PETR3.SA): ' + cValor + ' ' + 'Indice do dia: ' + cIndice )
Return Nil
Código: Selecionar todos
Function buscacotacao(cot)
...
oServer:Open( "GET", 'https://finance.yahoo.com/quote/'+cod+'.SA/', .f. )
Agora está dando erro na conexão com o site. Mas antes conectava sem problema, mas não retornava o valor correto.