Enviar solicitação POST em PHP

Subodh Poudel 30 janeiro 2023
  1. Use o método CURL-less usando as funções stream_context_create() e file_get_contents() para enviar uma solicitação POST em PHP
  2. Use o CURL para enviar a solicitação POST em PHP
  3. Crie uma função definida pelo usuário que usa o CURL para enviar a solicitação POST em PHP
Enviar solicitação POST em PHP

Apresentaremos um método para enviar uma solicitação POST em PHP usando o método sem CURL com o uso das funções http_build_query(), stream_context_create() e file_get_contents().

Mostraremos um método para enviar a solicitação POST em PHP usando o CURL. CURL é usado para enviar a solicitação HTTP para o servidor da web. O módulo CURL geralmente é pré-instalado com PHP. Se não estiver instalado, devemos instalá-lo manualmente para enviar a solicitação do servidor usando PHP.

Mostraremos um exemplo para enviar a solicitação POST em PHP usando o CURL criando uma função. Este método é muito semelhante ao segundo método. Ele usa uma função definida pelo usuário para enviar a solicitação. Podemos reutilizar o código fornecendo os diferentes dados de postagem e a URL.

Use o método CURL-less usando as funções stream_context_create() e file_get_contents() para enviar uma solicitação POST em PHP

Podemos enviar a solicitação POST em PHP usando as funções como http_build_query(), stream_context_create() e file_get_contents() sem usar o CURL. Podemos usar a função http_build_query() para criar parâmetros de consulta para enviar a solicitação POST. Podemos criar um array para especificar os cabeçalhos http, métodos e conteúdos. Usamos a função stream_context_create() para lidar com os dados transmitidos. A função file_get_contents() lê o conteúdo do url em uma string. Usamos as variáveis ​​globais $_POST para ler os dados.

Por exemplo, crie a função http_build_query() e crie um array dentro da função. Crie as chaves name e id e os valores Robert e 1 respectivamente na matriz. Atribua a função com uma variável $postdata. Crie um array para especificar o método HTTP, cabeçalho e conteúdo. Defina os valores para as chaves method, header e content como POST, Content-type: application/x-www-form-urlencoded e a variável $postdata. Envolva esta matriz dentro de outra matriz http. Atribua a matriz a uma variável $opts. Pegue o $opts como um parâmetro para a função stream_context_create() e atribua-o a uma variável $context. Use a função file_get_contents() e aplique uma URL http://localhost/request.php como o primeiro parâmetro. Use o valor booleano false e a variável $context como o segundo e o terceiro parâmetros. Atribua a função a uma variável $result e imprima-a. Crie um arquivo PHP request.php e exiba as chaves name e id usando a variável $_POST.

No exemplo abaixo, name e id são os dados a serem postados usando o método POST. O arquivo request.php lê os parâmetros de consulta usando a variável $_POST.

Código de exemplo:

# php 7.*
<?php
$postdata = http_build_query(
    array(
        'name' => 'Robert',
        'id' => '1'
    )
);
$opts = array('http' =>
    array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context = stream_context_create($opts);
$result = file_get_contents('http://localhost/request.php', false, $context);
echo $result;
?>
# php 7.*
<?php
echo "Name: ". $_POST['name']. "<br>";
echo "ID: ". $_POST['id'];
?>

Resultado:

Name: Robert
ID: 1

Use o CURL para enviar a solicitação POST em PHP

CURL significa URL do cliente. Podemos usar o CURL para enviar a solicitação POST por meio do script PHP. A versão PHP precisa do módulo curl para executar as diferentes funções curl. Neste método, usamos a função http_build_query() como no método acima para fazer os parâmetros da consulta. Podemos usar a função curl_init() para inicializar a conexão CURL no script. Usamos as funções curl_setopt() com algumas opções como CURLOPT_URL, CURLOPT_POST e CURLOPT_POSTFIELDS. Essas opções definem o URL, solicitam uma solicitação HTTP POST e POST os dados, respectivamente. Podemos usar a função curl_setopt() para retornar o conteúdo da URL e usar a função curl_exec() para executar a solicitação POST.

Por exemplo, crie as chaves name e id e os valores Wayne e 2 em um array $fields. Use o array como o parâmetro na função http_build_query() e atribua a função com uma variável $postdata. Abra uma conexão CURL usando a função curl_init() e atribua-a a uma variável $ch. Escreva três funções curl_setopt() e use a variável $ch como o primeiro parâmetro em todas as três funções. Como o segundo parâmetro nas funções, escreva as opções CURLOPT_URL, CURLOPT_POST e CURLOPT_POSTFIELDS na primeira, segunda e terceira funções, respectivamente. Defina o terceiro parâmetro como http://localhost/request.php, true e $postdata respectivamente nas três funções. Chame uma função curl_setopt() e use a variável $ch como o primeiro parâmetro, a opção CURLOPT_RETURNTRANSFER como o segundo parâmetro e o valor booleano true como o terceiro parâmetro. Chame a função curl_exec($ch) da variável $result e imprima o $result. Use o mesmo arquivo request.php do primeiro método.

Código de exemplo:

#php 7.x
<?php
$fields = [
    'name' => 'Wayne',
    'id' => 2,
];
$postdata = http_build_query($fields);
$ch = curl_init()
curl_setopt($ch,CURLOPT_URL, 'http://localhost/request.php');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>

Resultado:

Name: Wayne 
ID: 2

Crie uma função definida pelo usuário que usa o CURL para enviar a solicitação POST em PHP

Podemos criar um método para obter as entradas de URL e os dados POST para enviar a solicitação POST. Este método também usa o CURL como o segundo método. Ele usa todas as funções curl como antes. Este método visa reutilizar o código para vários URLs e dados.

Por exemplo, crie uma função httpPost() e tome as variáveis $url e $data como argumentos. Abra a conexão curl com a função curl_init() e tome a variável $url como parâmetro. Use as três funções curl_setopt() como no segundo método. Use o método curl_exec() para executar os dados POST. Crie um array $data e crie as chaves name e id e os valores Scott e 3. Chame o método httpPost() com o http://localhost/request.php como o URL e o array $data como os dados. Este método também usa o arquivo request.php como os dois métodos acima.

Exemplo de código:

#php 7.x
<?php
function httpPost($url, $data){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    echo $response;
}
$data = [
    'name' => 'Scott',
    'id' => 3
];
httpPost('http://localhost/request.php', $data);
?>

Resultado:

Name: Scott 
ID: 3
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn