É Clipper mesmo, Harbour ou xHarbour?
Esse código q vc postou é java?
O código do chatgpt não abriu “não foi possível abrir a conversa”.
Dá uma olhada aqui: GitHub - cnpja/example-harbour: Exemplo em Harbour de como consultar CNPJs via API na Receita Federal, Simples Nacional e Cadastro de Contribuintes · GitHub
Esse código é para ftp, dá uma olhada nas funções correlatas (isso é um exemplo):
oURL := TUrl():new()
oUrl:cProto := "ftp"
oUrl:cUserid := cFTPUSER
oUrl:cPassword := cFTPPASS
oUrl:cServer := cFTPSERVER
oUrl:nPort := nFTPPORT
oFTP := TIpClientFtp():new( oURL ) // Cria objeto FTP
oFTP:nConnTimeout := -1 // infinito
IF oFTP:OPEN()
MSGRODA("Verificando se há uma nova versão...", "W+/BG")
cFILE := "controli.txt"
FILEDELETE(cFILE) // SE EXISTIR (local), APAGA.
IF oFTP:DOWNLOADFILE(cFILE, cFTPFILE)
Para abrir uma conexão http é fácil, mas https é mais difícil. Tem algumas libs no Harbour que faz, mas ainda não conseguí. Para sftp também é ruim, só consigo ftp.
Tenho esse código aqui que é mais parecido com o que você precisa, ele abre uma URL, mas é http (funciona c/ (x)Harbour):
********************
Function Main(cCNPJ)
********************
*
*
If empty(cCNPJ) .or. len(cCNPJ) > 14 .or. len(cCNPJ) < 14
alert("Informe o CNPJ corretamente !")
cCNPJ := "60316817000103" //CNPJ -> Microsoft //"5311379100012"
EndIf
GetCNPJ(cCNPJ)
Return Nil
***********************
Function GetCNPJ(cCNPJ)
***********************
*
*
Local cRazao, cFantasia, cEndereco, cBairro, cCidade
Local cURL, oHTTP, cBloco, nInicio, nFim, cCEP
If empty(cCNPJ)
alert("Informe o CNPJ")
return .f.
EndIf
SETMODE(43,80)
CLS
cURL := "http://cnpj.info/"+cCNPJ
// cURL := "https://www.situacaocadastral.info/cnpj/"+cCNPJ
oHTTP:= TIPClientHTTP():New( cURL )
INKEY(0)
cURL := "http://cnpj.info/"+cCNPJ
oHTTP:= TIPClientHTTP():New( cURL )
IF oHTTP:Open()
// MSGRODA("Lendo cadastro do CNPJ...", "W+/BG")
IF oHTTP:ReadToFile( "cnpj_"+cCNPJ+".html" )
cBloco := HB_AnsiToOem( upper( memoread("cnpj_"+cCNPJ+".html") ) )
// DELETEFILE("cnpj_"+cCNPJ+".html")
// MSGRODA("Preenchendo os dados automaticamente do cadastro CNPJ...", "W+/BG")
// LIMITA-SE AO CORPO DO WEBSITE ONDE ESTÇO OS DADOS
cBloco := substr(cBloco,AT("<BODY>",cBloco) ,AT("</BODY>",cBloco) )
nInicio := AT("NOME DA EMPRESA",cBloco)
nFim := AT( "</A>", cBloco, nInicio) - nInicio
cUG := substr(cBloco,nInicio,nFim )
cUG := substr( cUG, RAT(">", cUG)+1 )
? cBLOCO
?
? cUG
cBloco := substr(cBloco,nInicio+nFim)
nInicio := AT("FANTASIA NOME",cBloco)
nFim := AT( "</A>", cBloco, nInicio) - nInicio
cFI := substr(cBloco,nInicio,nFim )
cFI := substr( cFI, RAT(">", cFI)+1 )
? cFI
cBloco := substr(cBloco,nInicio+nFim)
nInicio := RAT("ENDERE",cBloco)+15
nFim := AT( "CONTATOS", cBloco, nInicio) - nInicio - 5
// Tem endere‡o com 4 e 5 linhas, se tiver complemento.
cBLOCOE := substr(cBloco,nInicio,nFim)
nInicio := 1 // RAT("ENDERE",cBlocoE)+15
nFim := AT('<BR>', cBlocoE, nInicio) - nInicio
cEnd := substr(cBlocoE,nInicio,nFim )
cEnd := substr( cEnd, RAT(">",cEnd)+1 )
? cEND
cBlocoE := substr(cBlocoE,nInicio+nFim+5)
// SE 5 LINHAS, TEM COMPLEMENTO.
IF OCCURS(CHR(10), cBLOCOE) = 3 // 3 LINE FEEDs, TEM COMPLEMENTO.
nInicio := 1
nFim := AT( "<BR>", cBlocoE)-1
cCOM := substr(cBlocoE,nInicio,nFim ) // COMPLEMENTO
cCOM := substr( cCOM, AT(">", cCOM)+1 )
? cCOM
cBlocoE := substr(cBlocoE,nInicio+nFim+5)
ENDIF
nInicio := 1
nFim := AT( "<BR>", cBlocoE)-1
cBAI := substr(cBlocoE,nInicio,nFim )
? cBAI
cBlocoE := substr(cBlocoE,nInicio+nFim+5)
nInicio := 1
nFim := AT( "<BR>", cBlocoE)-1
cCidadeUF := substr(cBlocoE,nInicio,nFim )
cCID := ALLTRIM( SUBSTR(cCIDADEUF, 1, (AT("-", cCIDADEUF)-1)) )
cUF := ALLTRIM(SUBSTR(cCIDADEUF, (AT("-", cCIDADEUF)+1)))
? cCID
? cUF
cBlocoE := substr(cBlocoE,nInicio+nFim + 5)
nInicio := 1
nFim := 9
cCep := substr(cBlocoE,nInicio,nFim )
cCEP := STRTRAN(cCEP, "-") // REMOVE O "-" DO CEP
// BLOCO CONTATOS
nInicio := AT( "CONTATOS", cBloco, nInicio) - nInicio - 5
nFim := AT( "S¢CIO", cBloco, nInicio) - nInicio - 5 // ATEN€ÇO: "o" com acento agudo ¢
IF nINICIO > 0
// EXISTE BLOCO DE CONTATOS
cBLOCOC := substr(cBloco,nInicio,nFim)
? cBLOCOC
nINI := AT("TEL:", cBLOCOC)
nINI += 4 // PARA DEPOIS DO TEL:
nFIM := nINI
DO WHILE SUBSTR(cBLOCOC, ++nFIM, 1) # CHR(34) // PROCURA A PRàXIMA ASPA
ENDDO
nFIM := (nFIM - nINI)
// TELEFONE 1
cTEL1 := SUBSTR(cBLOCOC, nINI, nFIM) // TELEFONE
? cTEL1
cBLOCOC := SUBSTR(cBLOCOC, nINI)
nINI := AT("TEL:", cBLOCOC)
IF nINI > 0
nINI += 4
nFIM := nINI
DO WHILE SUBSTR(cBLOCOC, ++nFIM, 1) # CHR(34) // PROCURA A PRàXIMA ASPA
ENDDO
nFIM := (nFIM - nINI)
// TELEFONE 2
cTEL2 := SUBSTR(cBLOCOC, nINI, nFIM) // CELULAR
? cTEL2
ENDIF
cBLOCOC := SUBSTR(cBLOCOC, nINI)
// EXISTE EMAIL?
nINI := AT("MAILTO:", cBLOCOC)
IF nINI > 0
// PEGA EMAIL
nINI += 7
nFIM := nINI
DO WHILE SUBSTR(cBLOCOC, ++nFIM, 1) # CHR(34) // PROCURA A PRàXIMA ASPA
ENDDO
nFIM := (nFIM - nINI)
cEMAIL := LOWER( SUBSTR(cBLOCOC, nINI, nFIM) ) // EMAIL
? cEMAIL
ENDIF
ENDIF
ENDIF
ENDIF
DELETEFILE("cnpj_"+cCNPJ+".html")
Return .T.
Se alguém já conseguir fazer com https e sftp eu agradeço se compartilhar.