2017-08-24 1 views
0

Je suis en train de connecter API avec PHP. Mais tout ce que je reçois est "Les paramètres de commande sont requis". Pour fonctionner, j'ai besoin d'envoyer des données de corps RAW avec elle et il doit être dans la méthode PUT.PHP cURL avec JSON et le corps brut

données JSON doit ressembler

{ 
"OutputID":"Some key", 
"Activate":true, 
} 

Voici mon code

$curl = curl_init($URL); 

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); 

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 

$jsonData = array(
    'OutputID' => 'Some key', 
    'Activate' => true, 
); 

$jsonDataEncoded = json_encode($jsonData); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonDataEncoded); 

curl_setopt($curl, CURLOPT_HTTPHEADER, array( 
    'Content-Type: application/json', 
    'Content-Length: 0', 
    $Authorization_Token_Key)); 


if(curl_exec($curl) === false) 
{ 
    echo 'Curl error: ' . curl_error($curl); 
} 
else 
{ 
    echo ''; 
} 

Si j'essaie avec Postman cela fonctionne, mais pas en PHP Script.

+0

Pouvez-vous sur ce que vous entendez par ça ne marche pas en PHP? – Mike

+0

Puisque vous voulez utiliser la méthode 'PUT', j'imagine que vous devriez supprimer' curl_setopt ($ curl, CURLOPT_POST, true); ' –

+0

Votre' Content-Length' n'est pas 0. – ishegg

Répondre

0

@Patrick

Vous où le droit :)

Je retiré

curl_setopt($curl, CURLOPT_POST, true); 

Et cela fonctionne comme un charme

Merci

+0

Essayez plutôt d'utiliser 'curl_setopt ($ curl , CURLOPT_PUT, true); Voir https://stackoverflow.com/questions/19257295/send-put-request-with-php-curl – Mike