title: Referência da Classe ESP32HTTPClient - Métodos e Assinaturas C++ description: Documentação de API completa para a classe ESP32HTTPClient: construtor, métodos de verbos HTTP, cabeçalhos persistentes, autenticação e timeouts. keywords: classe ESP32HTTPClient, construtor ESP32HTTPClient, referencia biblioteca C++ ESP32 HTTP, metodos cliente HTTP ESP32 tags: - api - client - class
ESP32HTTPClient¶
O principal ponto de entrada da biblioteca. Crie uma instância por URL base de servidor e reutilize-a em todas as requisições.
Cabeçalho: #include "ESP32HTTPClient.h"
Construtor¶
ESP32HTTPClient(baseUrl)¶
Cria um cliente com seleção automática de porta (80 para HTTP, 443 para HTTPS).
Parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
baseUrl |
const char* |
A URL base incluindo protocolo (ex: "https://api.example.com"). Não inclua uma barra no final. |
Exemplo:
ESP32HTTPClient(baseUrl, port)¶
Cria um cliente direcionado a uma porta específica.
Parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
baseUrl |
const char* |
A URL base incluindo o protocolo. |
port |
int |
A porta TCP alvo (ex: 8080, 443). |
Exemplo:
Métodos de Requisição HTTP¶
Cada método retorna um RestRequest que pode ser encadeado com .query(), .body() e .getBody(). A requisição HTTP é enviada quando o objeto RestRequest sai de escopo ou quando o primeiro .getBody() é adicionado.
get(path)¶
Envia uma requisição GET para baseUrl + path.
Exemplo:
post(path)¶
Envia uma requisição POST para baseUrl + path.
Exemplo:
put(path)¶
Envia uma requisição PUT para baseUrl + path.
Exemplo:
update(path)¶
Alias semântico para put(). Envia uma requisição HTTP PUT idêntica.
Exemplo:
patch(path)¶
Envia uma requisição PATCH para baseUrl + path para atualizações parciais.
Exemplo:
del(path)¶
Envia uma requisição DELETE para baseUrl + path.
Exemplo:
soap(path)¶
Inicia uma requisição SOAP direcionada para baseUrl + path, retornando um builder SoapRequest.
Exemplo:
client.soap("/ws")
.soapAction("http://example.org/GetPrice")
.body("<m:GetPrice xmlns:m=\"http://example.org\"><m:Item>Widget</m:Item></m:GetPrice>")
.getBody("Price", &preco);
graphql(path) / graphqlPost(path)¶
Inicia uma requisição GraphQL para baseUrl + path (padrão POST), retornando um builder GraphQLRequest.
GraphQLRequest graphql(const char* path = "/graphql");
GraphQLRequest graphqlPost(const char* path = "/graphql");
Exemplo:
graphqlGet(path)¶
Inicia uma consulta GraphQL para baseUrl + path via HTTP GET, codificando query e variáveis como parâmetros na URL.
Exemplo:
graphqlBatch(path)¶
Inicia um lote de múltiplas operações GraphQL para baseUrl + path enviadas em uma única requisição HTTP POST, retornando um builder GraphQLBatchRequest.
Exemplo:
auto batch = client.graphqlBatch("/graphql");
batch.addQuery("query { user { name } }").getData("user.name", &nome);
batch.addQuery("query { config { tema } }").getData("config.tema", &tema);
batch.execute();
Métodos de Configuração¶
setHeader(name, value)¶
Registra um cabeçalho HTTP personalizado enviado com todas as requisições subsequentes.
| Parâmetro | Limite |
|---|---|
name |
Até 63 caracteres |
value |
Até 255 caracteres |
Exemplo:
client.setHeader("Authorization", "Bearer meu-token");
client.setHeader("X-Device-ID", "ESP32-001");
Note
Cabeçalhos persistem durante todo o ciclo de vida da instância do cliente. Chame setHeader() novamente com o mesmo nome para sobrescrevê-lo.
Lendo cabeçalhos de resposta
setHeader() define cabeçalhos a serem enviados na requisição. Para ler cabeçalhos retornados pelo servidor na resposta, utilize RestRequest::getHeader.
bearer(token)¶
Define o cabeçalho Authorization: Bearer <token> enviado com todas as requisições subsequentes.
| Parâmetro | Tipo | Descrição |
|---|---|---|
token |
const char* |
A string do token Bearer / JWT. |
Exemplo:
basic(user, password)¶
Codifica as credenciais em Base64 e define o cabeçalho Authorization: Basic <base64> enviado com todas as requisições subsequentes.
| Parâmetro | Tipo | Descrição |
|---|---|---|
user |
const char* |
Nome de usuário. |
password |
const char* |
Senha. |
Exemplo:
apiKey(name, key)¶
Define um cabeçalho de chave de API (ex: x-api-key) enviado com todas as requisições subsequentes.
| Parâmetro | Tipo | Descrição |
|---|---|---|
name |
const char* |
Nome do cabeçalho (ex: "X-API-Key" ou "x-api-key"). |
key |
const char* |
String da chave de API. |
Exemplo:
cookie(nome, valor)¶
Anexa ou cria um cabeçalho Cookie no cliente. Retorna uma referência para ESP32HTTPClient, permitindo que você encadeie chamadas .get(), .post() ou até mesmo outros .cookie() diretamente no cliente.
Parâmetros:
* nome: O nome do cookie (ex: "session_id").
* valor: O valor do cookie (ex: "abc1234").
Exemplo:
setBaseUrl(baseUrl, port)¶
Altera a URL base e a porta de destino em tempo de execução para as requisições subsequentes.
Exemplo:
setUrl(baseUrl)¶
Atalho para atualizar apenas a URL base em tempo de execução.
setPort(port)¶
Atualiza a porta TCP de destino em tempo de execução.
getBaseUrl()¶
Retorna a URL base atual configurada.
getPort()¶
Retorna a porta TCP configurada (ou 0 se padrão).
setTimeout(timeoutMs)¶
Configura o tempo limite (timeout) padrão em milissegundos para todas as requisições deste cliente. O padrão é 60000 ms (1 minuto).
Exemplo:
getTimeout()¶
Retorna o timeout configurado em milissegundos.
setMaxRetry(maxRetry)¶
Configura o número máximo de tentativas automáticas em caso de falha de rede. O padrão é 1 tentativa.
Exemplo:
getMaxRetry()¶
Retorna o número máximo configurado de tentativas.
setContentType(contentType)¶
Sobrescreve o cabeçalho Content-Type usado no corpo das requisições. O padrão é application/json.
Exemplo:
Inspeção de Resposta e Tratamento de Erros¶
getStatusCode()¶
Retorna o código de status HTTP da última requisição concluída.
Valores de retorno:
| Valor | Significado |
|---|---|
> 0 |
Código de status HTTP padrão (200, 201, 404, 500…) |
< 0 |
Erro no nível de rede (sem conexão, timeout, etc.) |
0 |
Nenhuma requisição foi realizada ainda |
isSuccess()¶
Retorna true se a última requisição foi concluída com status HTTP de sucesso 2xx (200 <= code < 300).
Exemplo:
client.get("/data").getBody("val", &val);
if (client.isSuccess()) {
Serial.println("Requisição bem-sucedida!");
}
hasError()¶
Retorna true se a última requisição falhou devido a um erro de rede (code < 0) ou erro HTTP de cliente/servidor (code >= 400).
Exemplo:
client.get("/data").getBody("val", &val);
if (client.hasError()) {
Serial.printf("Erro (%d): %s\n", client.getStatusCode(), client.getErrorMessage().c_str());
}
getErrorMessage()¶
Retorna uma descrição legível do último código de status ou de erro retornado.
errorToString(code)¶
Método estático auxiliar que converte qualquer código de status HTTP ou código de erro negativo em uma descrição textual.
Serialização & Desserialização de Structs¶
Métodos utilitários estáticos para conversão entre structs C++ mapeadas e strings JSON.
toJson(struct)¶
Serializa uma struct mapeada com REST_JSON_MAP em uma string JSON.
Exemplo:
fromJson(json, struct)¶
Preenche uma struct mapeada com REST_JSON_MAP a partir de uma string JSON.
template <typename T>
static void fromJson(const String& json, T* target);
template <typename T>
static void fromJson(const char* json, T* target);
Exemplo:
Callbacks¶
Você pode registrar callbacks globais na instância do cliente que são executados sempre que qualquer requisição é finalizada.
onSuccess(callback)¶
Registra um callback executado quando qualquer requisição finaliza com sucesso 2xx (200 <= code < 300).
Exemplo:
onError(callback)¶
Registra um callback executado quando qualquer requisição falha com erro (code < 200 || code >= 400).
Exemplo:
client.onError([](int code, const char* message) {
Serial.printf("Requisição falhou (%d): %s\n", code, message);
});
onResponse(callback)¶
Registra um callback executado em qualquer requisição concluída, independentemente de ter sucesso ou falhado.
Exemplo:
onObservability(cb)¶
Registra um callback global invocado ao final de cada requisição, fornecendo métricas de performance (tempos, tamanho de payload, uso de heap).
Definição do Struct (ObservabilityMetrics):
struct ObservabilityMetrics {
unsigned long totalTimeMs;
unsigned long ttfbMs;
size_t txBytes;
size_t rxBytes;
int retries;
uint32_t freeHeapBefore;
uint32_t freeHeapAfter;
};
Exemplo:
client.onObservability([](const ObservabilityMetrics& m) {
Serial.printf("TTFB: %lu ms | TX: %d | RX: %d\n", m.ttfbMs, m.txBytes, m.rxBytes);
});
Gerenciamento de Conexão¶
end()¶
Fecha a conexão TCP/TLS Keep-Alive persistente e libera seus buffers de memória.
Chame este método após uma sequência de requisições para liberar ~45KB de memória TLS durante um período de inatividade longo. A próxima requisição restabelecerá a conexão automaticamente.
Exemplo:
client.get("/data1").getBody("v", &v1);
client.get("/data2").getBody("v", &v2);
client.end(); // libera memória TLS
delay(60000);
client.get("/data3").getBody("v", &v3); // reconecta automaticamente
Códigos de Erro e Códigos de Status HTTP¶
| Código | Significado | Categoria |
|---|---|---|
-1 |
Conexão Recusada | Erro do cliente |
-2 |
Falha ao Enviar Cabeçalho | Erro do cliente |
-3 |
Falha ao Enviar Payload | Erro do cliente |
-4 |
Não Conectado | Erro do cliente |
-5 |
Conexão Perdida | Erro do cliente |
-6 |
Sem Stream | Erro do cliente |
-7 |
Sem Servidor HTTP | Erro do cliente |
-8 |
Memória RAM Insuficiente | Erro do cliente |
-9 |
Erro de Codificação | Erro do cliente |
-10 |
Erro de Escrita no Stream | Erro do cliente |
-11 |
Tempo Limite de Leitura | Erro do cliente |
200 |
OK | Sucesso HTTP |
201 |
Criado | Sucesso HTTP |
202 |
Aceito | Sucesso HTTP |
204 |
Sem Conteúdo | Sucesso HTTP |
400 |
Requisição Inválida | Erro do cliente HTTP |
401 |
Não Autorizado | Erro do cliente HTTP |
403 |
Proibido | Erro do cliente HTTP |
404 |
Não Encontrado | Erro do cliente HTTP |
405 |
Método Não Permitido | Erro do cliente HTTP |
408 |
Tempo Limite da Requisição | Erro do cliente HTTP |
409 |
Conflito | Erro do cliente HTTP |
429 |
Muitas Requisições | Erro do cliente HTTP |
500 |
Erro Interno do Servidor | Erro do servidor HTTP |
501 |
Não Implementado | Erro do servidor HTTP |
502 |
Gateway Inválido | Erro do servidor HTTP |
503 |
Serviço Indisponível | Erro do servidor HTTP |
504 |
Tempo Limite do Gateway | Erro do servidor HTTP |
0 |
Não Executado | Estado interno |
Comportamento Genérico de Fallback¶
- Códigos negativos desconhecidos → Erro de Cliente Desconhecido
- 200–299 → Sucesso
- 300–399 → Redirecionamento
- 400–499 → Erro do Cliente
- 500–599 → Erro do Servidor
- Outros valores → Status HTTP Desconhecido
Exemplo¶
Um pequeno exemplo de uso mostrando como aplicações podem tratar tanto erros de transporte quanto erros HTTP: