2017-10-01 2 views
1

J'essaye d'envoyer la requête CURL suivante en PHP. Mais son retour: "Erreur HTTP 411. La requête doit être fragmentée ou avoir une longueur de contenu."Demande de curl PHP retournant l'erreur HTTP 411: La requête doit être fragmentée ou avoir une longueur de contenu

PHP Script contenant la demande CURL:

<?php 
$numbers = 9999999999; 
$message = "Test"; 
$message = urlencode($message); 
$port = 80; 
$url = "http://191.95.51.64/API/sendsms.aspx?loginID=myloginid&password=mypassword&mobile=".$numbers."&text=".$message."&senderid=ABCDEF&route_id=1&Unicode=1"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_PORT, $port); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 20); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20); 
$output = curl_exec($ch); 
$err = curl_error($ch); 
curl_close($ch);  
if ($err) { 
    echo $err; 
} else { 
    echo $output; 
} 
?> 

Sortie:

Length Required 

HTTP Error 411. The request must be chunked or have a content length. 

Depuis que je suis nouveau utiliser Curl PHP, donc je ne pouvais pas être en mesure de savoir ce qui est erroné. Si quelqu'un peut brièvement me guider la solution avec un exemple, je serai très apprécié pour lui. Merci!

Répondre

2

Étant donné que vos données semblent envoyer comme param URL, essayez d'ajouter en-tête de longueur du contenu de zéro comme ci-dessous:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: 0));

également au lieu de toucher l'en-tête de longueur du contenu, essayez simplement d'ajouter un POST vide corps. Selon le type de serveur HTTP auquel vous envoyez des messages, le comportement diffère légèrement (IIS, LightHTTPD, Apache).

corps vide poste similaire à:

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array()));