headers file_get_contents example data code php curl http-get

file_get_contents - php send request



PHP cURL GET solicitud y cuerpo de solicitud (5)

Estoy tratando de usar cURL para una solicitud GET como esta:

function connect($id_user){ $ch = curl_init(); $headers = array( ''Accept: application/json'', ''Content-Type: application/json'', ); curl_setopt($ch, CURLOPT_URL, $this->service_url.''user/''.$id_user); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, 0); $body = ''{}''; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_POSTFIELDS,$body); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Timeout in seconds curl_setopt($ch, CURLOPT_TIMEOUT, 30); $authToken = curl_exec($ch); return $authToken; }

A medida que ve, quiero pasar $ body como el cuerpo de la solicitud, pero no sé si es correcto o no y no puedo depurar esto en realidad, ¿sabe si es correcto usar curl_setopt($ch, CURLOPT_POSTFIELDS,$body); con una solicitud GET?

Porque este código de enteire funciona perfectamente con POST, ahora estoy intentando cambiar esto a GET como puedes ver


La respuesta aceptada es incorrecta. GET solicitudes GET pueden contener un cuerpo. Esta es la solución implementada por WordPress , como ejemplo:

curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, ''GET'' ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $body );

EDITAR: Para aclarar, el curl_setopt inicial no es necesario en esta instancia, pero no hace daño. Se incluyó para ilustrar completamente el código de ejemplo al que se hace referencia.


Lo has hecho de la manera correcta usando

curl_setopt($ch, CURLOPT_POSTFIELDS,$body);

pero noto tu falta

curl_setopt($ch, CURLOPT_POST,1);


Para aquellos con problemas similares, esta biblioteca de solicitudes le permite realizar solicitudes http externas de forma aparente dentro de su aplicación php. Simplificar las solicitudes GET, POST, PATCH, DELETE y PUT.

Una solicitud de muestra sería la siguiente

use Libraries/Request; $data = [ ''samplekey'' => ''value'', ''otherkey'' => ''othervalue'' ]; $headers = [ ''Content-Type'' => ''application/json'', ''Content-Length'' => sizeof($data) ]; $response = Request::post(''https://example.com'', $data, $headers); // the $response variable contains response from the request

La documentación para el mismo se puede encontrar en el README.md del proyecto README.md


CURLOPT_POSTFIELDS como su nombre indica, es para el cuerpo (carga útil) de una solicitud POST . Para las solicitudes GET , la carga útil es parte de la URL en forma de una cadena de consulta.

En su caso, debe construir la URL con los argumentos que necesita enviar (si corresponde) y eliminar las otras opciones a cURL.

curl_setopt($ch, CURLOPT_URL, $this->service_url.''user/''.$id_user); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, 0); //$body = ''{}''; //curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); //curl_setopt($ch, CURLOPT_POSTFIELDS,$body); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);


<?php $post = [''batch_id''=> "2"]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,''https://example.com/student_list.php''); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); $response = curl_exec($ch); $result = json_decode($response); $new= $result->status; if( $new =="1") { echo "<script>alert(''Student list'')</script>"; } else { echo "<script>alert(''Not Removed'')</script>"; } ?>