Ejemplo con curl

Una vez compilado PHP con soporte para cURL, puede iniciarse el uso de las funciones cURL. La primera acción consiste en inicializar una sesión cURL mediante la función curl_init(), luego pueden definirse todas las opciones para la transferencia con la función curl_setopt(), y finalmente, puede ejecutarse la sesión con curl_exec() y cerrarse con la función curl_close(). A continuación se muestra un ejemplo que utiliza las funciones cURL para recuperar la página de inicio del sitio example.com en un fichero:

Ejemplo #1 Uso del módulo cURL para recuperar la página de inicio de example.com

<?php

$ch
= curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
if(
curl_error($ch)) {
fwrite($fp, curl_error($ch));
}
curl_close($ch);
fclose($fp);
?>

add a note

User Contributed Notes 1 note

up
58
Roberto Braga
10 years ago
It is important to notice that when using curl to post form data and you use an array for CURLOPT_POSTFIELDS option, the post will be in multipart format

<?php
$params
=['name'=>'John', 'surname'=>'Doe', 'age'=>36];
$defaults = array(
CURLOPT_URL => 'http://myremoteservice/',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $params,
);
$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
?>
This produce the following post header:

--------------------------fd1c4191862e3566
Content-Disposition: form-data; name="name"

Jhon
--------------------------fd1c4191862e3566
Content-Disposition: form-data; name="surnname"

Doe
--------------------------fd1c4191862e3566
Content-Disposition: form-data; name="age"

36
--------------------------fd1c4191862e3566--

Setting CURLOPT_POSTFIELDS as follow produce a standard post header

CURLOPT_POSTFIELDS => http_build_query($params),

Which is:
name=John&surname=Doe&age=36

This caused me 2 days of debug while interacting with a java service which was sensible to this difference, while the equivalent one in php got both format without problem.
To Top