body - PHP cURL HTTP PUT
php curl put json (3)
En un método POST, puede poner una matriz. Sin embargo, en un método PUT, debe usar http_build_query
para construir los parámetros de esta manera:
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $postArr ) );
Estoy intentando crear una solicitud HTTP PUT con cURL y no puedo hacer que funcione. He leído muchos tutoriales, pero ninguno de ellos realmente funcionó. Aquí está mi código actual:
$filedata = array(''metadata'' => $rdfxml);
$ch = curl_init($url);
$header = "Content-Type: multipart/form-data; boundary=''123456f''";
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($filedata));
$returned = curl_exec($ch);
if (curl_error($ch))
{
print curl_error($ch);
}
else
{
print ''ret: '' .$returned;
}
También intenté usar PHP PEAR pero obtuve el mismo resultado. El problema es que el repositorio dice que no se han establecido metadatos. Realmente necesito ayuda! ¡Gracias!
Solo he estado haciendo eso yo mismo hoy ... aquí está el código que tengo trabajando para mí ...
$data = array("a" => $a);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
if (!$response)
{
return false;
}
src: http://www.lornajane.net/posts/2009/putting-data-fields-with-php-curl
Usando Postman para Chrome, seleccionando CÓDIGO obtienes esto ... Y funciona
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://blablabla.com/comorl",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "{/n /"customer/" : /"con/",/n /"customerID/" : /"5108/",/n /"customerEmail/" : /"[email protected]/",/n /"Phone/" : /"34600000000/",/n /"Active/" : false,/n /"AudioWelcome/" : /"https://audio.com/welcome-defecto-es.mp3/"/n/n}",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/json",
"x-api-key: whateveriyouneedinyourheader"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>