Enviar solicitud POST en PHP

Subodh Poudel 30 enero 2023
  1. Use el método sin CURL usando las funciones stream_context_create() y file_get_contents() para enviar una solicitud POST en PHP
  2. Utilice el CURL para enviar la solicitud POST en PHP
  3. Cree una función definida por el usuario que utilice CURL para enviar la solicitud POST en PHP
Enviar solicitud POST en PHP

Introduciremos un método para enviar una solicitud POST en PHP usando el método CURL-less con el uso de las funciones http_build_query(), stream_context_create() y file_get_contents().

Le mostraremos un método para enviar la solicitud POST en PHP usando CURL. CURL se utiliza para enviar la solicitud HTTP al servidor web. El módulo CURL generalmente está preinstalado con PHP. Si no se ha instalado, debemos instalarlo manualmente para enviar la solicitud del servidor mediante PHP.

Le mostraremos un ejemplo para enviar la solicitud POST en PHP usando CURL creando una función. Este método es muy similar al segundo método. Utiliza una función definida por el usuario para enviar la solicitud. Podemos reutilizar el código que proporciona los diferentes datos de la publicación y la URL.

Use el método sin CURL usando las funciones stream_context_create() y file_get_contents() para enviar una solicitud POST en PHP

Podemos enviar la solicitud POST en PHP usando funciones como las funciones http_build_query(), stream_context_create() y file_get_contents() sin usar el CURL. Podemos usar la función http_build_query() para crear parámetros de consulta para enviar la solicitud POST. Podemos crear un array para especificar los encabezados http, los métodos y el contenido. Usamos la función stream_context_create() para manejar los datos transmitidos. La función file_get_contents() lee el contenido de la URL en una cadena. Usamos las variables globales $_POST para leer los datos.

Por ejemplo, cree la función http_build_query() y cree un array dentro de la función. Cree las claves name e id y los valores Robert y 1 respectivamente en el array. Asigne la función con una variable $postdata. Cree un array para especificar el método HTTP, el encabezado y el contenido. Establezca los valores de las claves method, header y content como POST, Content-type: application/x-www-form-urlencoded y la variable $postdata. Envuelva esta matriz dentro de otra matriz http. Asigne el array a una variable $opts. Tome $opts como parámetro de la función stream_context_create() y asígnelo a una variable $context. Utilice la función file_get_contents() y aplique una URL http://localhost/request.php como primer parámetro. Utilice el valor booleano false y la variable $context como segundo y tercer parámetro. Asigne la función a una variable $result e imprímala. Cree un archivo PHP request.php y repita las claves name e id usando la variable $_POST.

En el siguiente ejemplo, name e id son los datos que se publicarán mediante el método POST. El archivo request.php lee los parámetros de consulta usando la variable $_POST.

Código de ejemplo:

# 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'];
?>

Producción :

Name: Robert
ID: 1

Utilice el CURL para enviar la solicitud POST en PHP

CURL son las siglas de Client URL. Podemos usar CURL para enviar la solicitud POST a través del script PHP. La versión de PHP necesita el módulo curl para ejecutar las diferentes funciones de curl. En este método, usamos la función http_build_query() como en el método anterior para hacer los parámetros de consulta. Podemos usar la función curl_init() para inicializar la conexión CURL en el script. Usamos las funciones curl_setopt() con algunas opciones como CURLOPT_URL, CURLOPT_POST y CURLOPT_POSTFIELDS. Estas opciones establecen la URL, solicitan una solicitud HTTP POST y POST los datos, respectivamente. Podemos usar la función curl_setopt() para devolver el contenido de la URL y usar la función curl_exec() para ejecutar la solicitud POST.

Por ejemplo, cree las claves name e id y los valores Wayne y 2 en un array $ campos. Utilice el array como parámetro en la función http_build_query() y asigne la función con una variable $postdata. Abra una conexión CURL usando la función curl_init() y asígnela a una variable $ch. Escriba tres funciones curl_setopt() y use la variable $ch como primer parámetro en las tres funciones. Como segundo parámetro de las funciones, escriba las opciones CURLOPT_URL, CURLOPT_POST y CURLOPT_POSTFIELDS en la primera, segunda y tercera funciones, respectivamente. Establezca el tercer parámetro como http://localhost/request.php, true y $postdata respectivamente en las tres funciones. Llame a una función curl_setopt() y utilice la variable $ch como primer parámetro, la opción CURLOPT_RETURNTRANSFER como segundo parámetro y el valor booleano true como tercer parámetro. Llame a la función curl_exec($ch) desde la variable $result e imprima el $result. Utilice el mismo archivo request.php del primer método.

Código de ejemplo:

#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;
?>

Producción :

Name: Wayne 
ID: 2

Cree una función definida por el usuario que utilice CURL para enviar la solicitud POST en PHP

Podemos crear un método para tomar las entradas de URL y los datos POST para enviar la solicitud POST. Este método también utiliza CURL como segundo método. Utiliza todas las funciones de curl como antes. Este método tiene como objetivo reutilizar el código para múltiples URL y datos.

Por ejemplo, cree una función httpPost() y tome las variables $url y $data como argumentos. Abra la conexión curl con la función curl_init() y tome la variable $url como parámetro. Utilice las tres funciones curl_setopt() como en el segundo método. Utilice el método curl_exec() para ejecutar los datos POST. Cree un array $data y cree las claves name e id y los valores Scott y 3. Llame al método httpPost() con http://localhost/request.php como URL y el array $data como datos. Este método también usa el archivo request.php como los dos métodos anteriores.

Ejemplo 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);
?>

Producción :

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