2011-02-18 28 views
37

Estoy tratando de crear una solicitud HTTP PUT con cURL y no puedo hacerlo funcionar. He leído muchos tutoriales, pero ninguno de ellos realmente funcionó. Aquí está mi código actual:PHP cURL HTTP PUT

$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!

Respuesta

74

Sólo estado haciendo eso mismo hoy ... aquí es el código que he 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

+1

e intenté usar 'curl_setopt ($ curl, CURLOPT_PUT, true);' así como este código y no funcionó, por lo que 'curl_setopt ($ curl, CURLOPT_PUT, true);' debe eliminarse. –

+0

¿Cómo se leen los datos PUT? Lo intenté todo, pero no tuve suerte. POST, GET o REQUEST no funcionan. – andrebruton

+0

@andrebruton probaría 'file_get_contents ('php: // input')' –

0

El uso de cartero para Chrome, la selección de código que obtiene este .. . 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; 
 
} 
 

 
?>

No