FUNCTION Main( cCNPJ ) IF Empty( cCNPJ ) .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 LOCAL cBloco, cText, cBlocoEndereco, aList cBloco := GetFromInternet( "http://cnpj.info/" + cCNPJ ) cBloco := TextAfter( cBloco, "" ) cRazao := XmlNode( cBloco, "a" ) ? cRazao cBloco := TextAfter( cBloco, "" ) cFantasia := XmlNode( cBloco, "a" ) ? cFantasia cBloco := TextAfter( cBloco, "" ) cBlocoEndereco := TextUntil( cBloco, "

" ) aList := hb_RegExSplit( "
", cBlocoEndereco ) FOR EACH cText IN aList ? "Endereço " + Str( cText:__EnumIndex, 2 ) + " " + cText NEXT RETURN .T. FUNCTION GetFromInternet( cUrl ) LOCAL cBloco := "", cFile := "d:\temp\lixo.txt" LOCAL oHttp oHTTP:= TIPClientHTTP():New( cURL ) IF oHTTP:Open() IF oHTTP:ReadToFile( cFile ) cBloco := hb_memoread( cFile ) fErase( cFile ) Alert( "Erro gravando dados do CNPJ", oHTTP:lastErrorMessage() ) ENDIF ELSE Alert( "Erro conectando: ", oHTTP:lastErrorMessage() ) ENDIF RETURN cBloco FUNCTION TextAfter( cBloco, cText ) cBloco := Substr( cBloco, At( cText, cBloco ) + Len( cText ) ) RETURN cBloco FUNCTION TextUntil( cBloco, cText ) cBloco := Substr( cBloco, 1, At( cText, cBloco ) - 1 ) RETURN cBloco