Ich versuche, eine HTTP-PUT-Anforderung mit cURL zu erstellen, aber ich kann sie nicht zum Laufen bringen. Ich habe viele Tutorials gelesen, aber keines davon hat tatsächlich funktioniert. Hier ist mein aktueller Code:
$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;
}
Ich habe auch versucht, PHP PEAR zu verwenden, habe aber das gleiche Ergebnis erzielt. Das Problem ist, dass das Repository angibt, dass keine Metadaten festgelegt wurden. Ich brauche wirklich Hilfe! Vielen Dank!
curl_setopt($curl, CURLOPT_PUT, true);
diesen Code zu verwenden, und er nicht funktioniert hat und daher entfernt werdencurl_setopt($curl, CURLOPT_PUT, true);
muss.file_get_contents('php://input')
Wenn Sie mit Postman for Chrome CODE auswählen, erhalten Sie Folgendes ... und es funktioniert
<?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; } ?>
quelle
In einer POST-Methode können Sie ein Array einfügen. In einer PUT-Methode sollten Sie jedoch
http_build_query
die folgenden Parameter erstellen:quelle
Sie haben 2 Standard gemischt.
Der Fehler ist in
$header = "Content-Type: multipart/form-data; boundary='123456f'";
Die Funktion
http_build_query($filedata)
ist nur für "Inhaltstyp: application / x-www-form-urlencoded" oder keine.quelle