Controles de Internet
A aba Internet fornece 9 controles para navegacao web, rede HTTP/FTP, email, comunicacao WebSocket e programacao de sockets TCP/UDP. Todos os controles sao multiplataforma e usam I/O nao-bloqueante internamente.
TWebView CT_WEBVIEW = 62
Incorpora um navegador web completo dentro de um formulario. Renderiza conteudo HTML ou navega para URLs usando o motor web nativo da plataforma.
| Propriedade | Tipo | Padrao | Descricao |
cURL | String | "" | URL para navegar |
cHTML | String | "" | Conteudo HTML bruto para renderizar |
lCanGoBack | Logico | .F. | Se o historico de navegacao permite voltar (somente leitura) |
lCanGoForward | Logico | .F. | Se o historico de navegacao permite avancar (somente leitura) |
cTitle | String | "" | Titulo da pagina (somente leitura) |
| Evento | Categoria | Descricao |
OnNavigate | Navegacao | Disparado antes de navegar para uma nova URL. Retorne .F. para cancelar |
OnLoad | Navegacao | Pagina terminou de carregar |
OnError | Erro | Erro de navegacao ou renderizacao ocorreu |
| Plataforma | Widget Nativo |
| Windows | WebView2 (Chromium-based Edge) |
| macOS | WKWebView (WebKit) |
| Linux | WebKitGTK (WebKit2) |
TWebServer CT_WEBSERVER = 71
Servidor HTTP/HTTPS incorporado. Permite que sua aplicacao sirva paginas web, APIs REST, ou atue como endpoint de servico local.
| Propriedade | Tipo | Padrao | Descricao |
nPort | Numero | 8080 | Numero da porta de escuta |
cHost | String | "0.0.0.0" | Endereco de vinculacao |
cDocumentRoot | String | "" | Diretorio raiz para arquivos estaticos |
lSSL | Logico | .F. | Habilitar HTTPS |
cCertFile | String | "" | Caminho para o arquivo de certificado SSL |
cKeyFile | String | "" | Caminho para o arquivo de chave privada SSL |
nMaxConnections | Numero | 256 | Numero maximo de conexoes simultaneas |
| Evento | Categoria | Descricao |
OnRequest | Acao | Requisicao HTTP recebada. Params: oRequest, oResponse |
OnConnect | Conexao | Novo cliente conectado |
OnDisconnect | Conexao | Cliente desconectado |
OnStart | Ciclo de Vida | Servidor comecou a escutar |
OnStop | Ciclo de Vida | Servidor parado |
OnError | Erro | Erro do servidor ocorreu |
TWebSocket CT_WEBSOCKET = 72
Cliente WebSocket para comunicacao bidirecional em tempo real com um servidor.
| Propriedade | Tipo | Padrao | Descricao |
cURL | String | "" | URL do servidor WebSocket (ws:// ou wss://) |
cProtocol | String | "" | Sub-protocolo para negociar |
lAutoReconnect | Logico | .F. | Reconectar automaticamente na desconexao |
nReconnectDelay | Numero | 3000 | Atraso em ms antes da tentativa de reconexao |
| Evento | Categoria | Descricao |
OnOpen | Conexao | Conexao estabelecida |
OnMessage | Dados | Mensagem recebida do servidor |
OnClose | Conexao | Conexao fechada |
OnError | Erro | Erro de conexao ou protocolo |
THttpClient CT_HTTPCLIENT = 73
Cliente HTTP para fazer chamadas de API REST, baixar arquivos e comunicacao HTTP geral.
| Propriedade | Tipo | Padrao | Descricao |
cURL | String | "" | URL da requisicao |
cMethod | String | "GET" | Metodo HTTP (GET, POST, PUT, DELETE, PATCH) |
aHeaders | Array | {} | Headers da requisicao como pares chave-valor |
cBody | String | "" | Conteudo do corpo da requisicao |
nTimeout | Numero | 30000 | Timeout da requisicao em milissegundos |
nStatusCode | Numero | 0 | Codigo de status da resposta (somente leitura) |
| Evento | Categoria | Descricao |
OnResponse | Dados | Resposta recebida. Params: nStatus, cBody, aHeaders |
OnProgress | Dados | Progresso de download/upload. Params: nCurrent, nTotal |
OnError | Erro | Requisicao falhou |
TFtpClient CT_FTPCLIENT = 74
Cliente FTP/FTPS para operacoes de transferencia de arquivos.
| Propriedade | Tipo | Padrao | Descricao |
cHost | String | "" | Hostname do servidor FTP |
nPort | Numero | 21 | Porta do servidor |
cUser | String | "" | Nome de usuario de login |
cPassword | String | "" | Senha de login |
lPassiveMode | Logico | .T. | Usar modo passivo para transferencias de dados |
lSSL | Logico | .F. | Usar FTPS (FTP sobre TLS) |
| Evento | Categoria | Descricao |
OnConnect | Conexao | Conectado com sucesso ao servidor |
OnTransfer | Dados | Progresso da transferencia de arquivo. Params: cFile, nBytes, nTotal |
OnError | Erro | Erro de conexao ou transferencia |
TSmtpClient CT_SMTPCLIENT = 75
Cliente SMTP para enviar mensagens de email com anexos.
| Propriedade | Tipo | Padrao | Descricao |
cHost | String | "" | Hostname do servidor SMTP |
nPort | Numero | 587 | Porta do servidor (25, 465 ou 587) |
lSSL | Logico | .T. | Usar criptografia TLS/SSL |
cUser | String | "" | Nome de usuario de autenticacao |
cPassword | String | "" | Senha de autenticacao |
cFrom | String | "" | Endereco de email do remetente |
cTo | String | "" | Endereco(s) de email do destinatario, separados por virgula |
cSubject | String | "" | Linha de assunto do email |
cBody | String | "" | Conteudo do corpo do email |
| Evento | Categoria | Descricao |
OnSend | Acao | Email enviado com sucesso |
OnError | Erro | Erro de envio ou conexao |
TTcpServer CT_TCPSERVER = 76
Servidor socket TCP. Escuta por conexoes de entrada e gerencia multiplos clientes.
| Propriedade | Tipo | Padrao | Descricao |
nPort | Numero | 0 | Porta de escuta |
cHost | String | "0.0.0.0" | Endereco de vinculacao |
nMaxConnections | Numero | 128 | Numero maximo de conexoes simultaneas |
lActive | Logico | .F. | Servidor esta escutando no momento (somente leitura) |
| Evento | Categoria | Descricao |
OnAccept | Conexao | Nova conexao de cliente aceita. Params: oClient |
OnReceive | Dados | Dados recebidos do cliente. Params: oClient, cData |
OnDisconnect | Conexao | Cliente desconectado. Params: oClient |
TTcpClient CT_TCPCLIENT = 77
Cliente socket TCP. Conecta a um servidor remoto para comunicacao baseada em stream.
| Propriedade | Tipo | Padrao | Descricao |
cHost | String | "" | Hostname ou IP do servidor remoto |
nPort | Numero | 0 | Porta do servidor remoto |
nTimeout | Numero | 10000 | Timeout de conexao em milissegundos |
lConnected | Logico | .F. | Status da conexao (somente leitura) |
| Evento | Categoria | Descricao |
OnConnect | Conexao | Conectado com sucesso ao servidor |
OnReceive | Dados | Dados recebidos do servidor. Params: cData |
OnDisconnect | Conexao | Desconectado do servidor |
TUdpSocket CT_UDPSOCKET = 78
Socket UDP datagram para comunicacao sem conexao, de baixa latencia.
| Propriedade | Tipo | Padrao | Descricao |
nPort | Numero | 0 | Porta local para vincular |
lBroadcast | Logico | .F. | Habilitar modo broadcast |
cHost | String | "0.0.0.0" | Endereco de vinculacao |
| Evento | Categoria | Descricao |
OnReceive | Dados | Datagrama recebido. Params: cData, cSenderIP, nSenderPort |
Exemplo de Codigo: Servidor Web Simples
// Um servidor web simples que responde a requisicoes HTTP
FUNCTION Main()
LOCAL oServer
oServer := TWebServer():New()
oServer:nPort := 8080
oServer:cDocumentRoot := "./public"
oServer:OnRequest := { |oReq, oRes| HandleRequest( oReq, oRes ) }
oServer:OnStart := { || QOut( "Servidor rodando na porta 8080" ) }
oServer:OnError := { |e| QOut( "Erro: " + e:Description ) }
oServer:Start()
// Manter a aplicacao rodando
WAIT "Pressione qualquer tecla para parar..."
oServer:Stop()
RETURN NIL
FUNCTION HandleRequest( oReq, oRes )
DO CASE
CASE oReq:cPath == "/api/hello"
oRes:cContentType := "application/json"
oRes:cBody := '{"message": "Ola do HarbourBuilder!"}'
CASE oReq:cPath == "/api/time"
oRes:cContentType := "application/json"
oRes:cBody := '{"time": "' + Time() + '"}'
OTHERWISE
oRes:nStatus := 404
oRes:cBody := "Nao Encontrado"
ENDCASE
RETURN NIL
9 Controles de Internet
Todos os controles de Internet usam I/O assincrono e orientado a eventos. Operacoes de rede nunca bloqueiam a thread da UI.
TLS/SSL e suportado em todas as plataformas usando o repositorio de certificados nativo do sistema.