Cliente HTTP em PHP: fazendo requisições corretamente do A ao Z

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que preciso de um cliente HTTP em PHP?

No desenvolvimento web moderno, aplicações PHP raramente existem de forma isolada. Quase todo projeto interage com serviços externos: sistemas de pagamento, APIs de redes sociais, armazenamento em nuvem ou microsserviços próprios. Para isso, é necessário um cliente HTTP em PHP confiável, que permita enviar requisições, processar respostas e gerenciar conexões.

Neste artigo, abordaremos todas as formas de criar um cliente HTTP em PHP: desde as funções nativas mais simples até bibliotecas profissionais. Você aprenderá como tratar erros corretamente, trabalhar com cabeçalhos e timeouts, além de obter exemplos de código prontos.

O material será útil tanto para iniciantes que estão começando a aprender PHP quanto para desenvolvedores experientes que desejam sistematizar seus conhecimentos.



1. Ferramentas nativas do PHP para requisições HTTP

O PHP oferece várias ferramentas nativas para trabalhar com HTTP. Vamos ver as mais populares.



1.1. file_get_contents() — maneira simples

A maneira mais simples de enviar uma requisição GET é usar a função file_get_contents(). Ela lê o conteúdo de um arquivo ou URL em uma string.

<?php$url = 'https://api.example.com/data';$response = file_get_contents($url);

if ($response === false) { echo 'Erro ao executar a requisição';} else { echo $response;}?>

Vantagens: código mínimo, não requer extensões adicionais.

Desvantagens: não suporta requisições POST, difícil gerenciar cabeçalhos, sem tratamento de timeouts, inadequado para produção.



1.2. stream_context_create() — configuração de contexto

Para um trabalho mais flexível, use stream_context_create(). Este método permite definir o método da requisição, cabeçalhos e corpo da requisição.

<?php$data = json_encode(['name' => 'John', 'age' => 30]);

$options = [ 'http' => [ 'method' => 'POST', 'header' => "Content-Type: application/json\\r" . "Content-Length: " . strlen($data) . "\\r", 'content' => $data, 'timeout' => 10 ]];

$context = stream_context_create($options);$response = file_get_contents('https://api.example.com/users', false, $context);

if ($response === false) { echo 'Erro na requisição';} else { $result = json_decode($response, true); print_r($result);}?>

Essa abordagem é melhor, mas ainda tem limitações de funcionalidade e desempenho.



2. cURL — cliente HTTP poderoso em PHP

cURL (Client URL Library) é a ferramenta padrão para trabalhar com HTTP em PHP. Ela oferece controle máximo sobre as requisições e é suportada praticamente em todas as hospedagens.



2.1. Envio básico de requisição GET

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/users');curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 30);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_error($ch)) { echo 'Erro cURL: ' . curl_error($ch);} else { echo "Código HTTP: $httpCode"; echo $response;}

curl_close($ch);?>


2.2. Requisição POST com dados

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/users');curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['name' => 'Alice', 'email' => 'alice@example.com']));curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, [    'Content-Type: application/x-www-form-urlencoded',    'Authorization: Bearer your_token_here']);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($c

Blogs

Book Recommendations