Instalação
Artigos
Cursos
Loja
INSTALAÇÃO
ARTIGOS
CURSOS
EBOOKS
DOWNLOADS
LOJA
ARTIGOS
Como fazer POST usando file_get_contents, cURL e Guzzle
Aprenda diversas maneiras de realizar um POST em PHP
Este tutorial irá demonstrar como executar POSTs em PHP usando três métodos diferentes: - `file_get_contents` - cURL - Guzzle As duas primeiras opções representam as maneiras mais comuns usadas para realizar requisições em PHP. As funções `file_get_contents` e cURL obtém resultados semelhantes caso a requisição não exija configurações mais complexas. Por sua vez o Guzzle é um cliente PHP que torna o processo de realizar uma requisição ou integração WEB mais simples.
## `file_get_contents` A função `file_get_contents` é normalmente conhecida por sua principal função, transformar todo o conteúdo de um arquivo para uma String. No entanto ela é bem mais capaz do que isso, também é possível enviar HTTP POSTs. Embora realizar requisições HTTP utilizando a função `file_get_contents` não uma tarefa trivial, também passa longe de ser complexa. Para que isso seja possível o desenvolvedor deve utilizar o parâmetro `context` disponível na função. ### Exemplo Para exemplificar de maneira simples como utilizar o `file_get_contents` vou criar dois arquivos php: **enviar.php** ```php 'Valor a ser enviado no post', 'chave2' => 'Informações' ) ); $opcoes = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $dadosParaEnviar ) ); $contexto = stream_context_create($opcoes); $result = file_get_contents('http://localhost/post/receber.php', false, $contexto); echo file_get_contents('/tmp/dados-post.txt'); ``` **receber.php** ```php 'valor')); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/post/receber.php"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); curl_close ($ch); var_dump(file_get_contents('/tmp/dados-post.txt'));die; ``` **receber.php** Será utilizado o mesmo arquivo, pois o quem recebe a requisição não sabe como ela foi realizada e deve funcionar para todos os casos. ```php
## Guzzle → http://docs.guzzlephp.org O Guzzle é um cliente HTTP PHP que facilita o envio de solicitações HTTP, com ele é simples realizar uma integração baseada em web services. Principais funcionalidades do Guzzle: * Interface simples para construção de consultas de consulta, solicitações de POST, streaming de grandes uploads, etc * Requisições síncronas * Requisições assíncronas ### Instalação **Pré-requisitos** Para instalar o Guzzle você precisa de: 1. PHP na versão 5.5.0 ou superior 2. Para usar o PHP stream handler, você deve habilitar a opção `allow_url_fopen` no seu `php.ini`. 3. Para usar o cURL handler, você deve ter uma versão recente do cURL >= 7.19.4 A instalação do Guzzle deve ser feita através do composer, você pode adicionar a dependência no seu arquivo `composer.json`: ```json { "require": { "guzzlehttp/guzzle": "~6.0" } } ``` Caso você ainda não use composer no seu projeto você pode usar o seguinte comando: ```bash composer require guzzlehttp/guzzle:~6.0 ``` **Como criar um cliente com Guzzle** Abaixo você pode conferir o exemplo mínimo para criar um cliente com Guzzle: ```php 'http://127.0.0.1/guzzle/receber.php', // Tempo padrão de espera para a requisição 'timeout' => 2.0, ]); ``` Com o cliente criado você pode usá-lo para enviar diversos tipos de requisição como: ```php $response = $client->get('http://httpbin.org/get'); $response = $client->delete('http://httpbin.org/delete'); $response = $client->head('http://httpbin.org/get'); $response = $client->options('http://httpbin.org/get'); $response = $client->patch('http://httpbin.org/patch'); $response = $client->post('http://httpbin.org/post'); $response = $client->put('http://httpbin.org/put'); ``` O Guzzle é uma ferramenta muito completa e com muitas funções, o objetivo desse post não é tornar você um especialista em Guzzle e aumentar o seu arcabouço de conhecimentos, para mais informações leia a documentação oficial da ferramenta em: http://docs.guzzlephp.org/en/stable/overview.html
COMENTE SOBRE