2011-02-18 66 views
37

我想用cURL创建一个HTTP PUT请求,我无法让它工作。我读过很多教程,但其中没有一个真正起作用。这是我现在的代码: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; 
} 

我也尝试使用PHP梨,但得到了相同的结果。问题是存储库说没有设置元数据。我真的需要帮助!谢谢!

回答

74

只是一直在做,今天我自己...这里是代码,我的工作对我来说...

$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; 
} 

源:http://www.lornajane.net/posts/2009/putting-data-fields-with-php-curl

+1

不e,我尝试使用`curl_setopt($ curl,CURLOPT_PUT,true);`以及这段代码,它不起作用,所以`curl_setopt($ curl,CURLOPT_PUT,true);`必须被移除。 – 2016-06-24 10:22:31

0

邮差使用Chrome浏览器,选择CODE你这个.. 。和工程

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

 
?>