it-swarm.com.de

PHP Curl-Anforderung, die HTTP-Fehler 411 zurückgibt: Die Anforderung muss aufgeteilt sein oder eine Inhaltslänge haben

Ich versuche die folgende CURL-Anfrage in PHP zu senden. Es wird jedoch zurückgegeben: "HTTP-Fehler 411. Die Anforderung muss aufgeteilt sein oder eine Inhaltslänge haben." 

PHP-Skript mit der CURL-Anfrage: 

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

Ausgabe: 

Length Required

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

Da ich neu bin, um PHP Curl zu verwenden, konnte ich also nicht herausfinden, was falsch ist. Wenn mir jemand anhand eines Beispiels die Lösung kurz erklären kann, bin ich ihm sehr dankbar. Vielen Dank!

4
Amlan Dutta

Da Ihre Daten scheinbar als URL-Parameter gesendet werden, versuchen Sie, den Header für die Inhaltslänge wie folgt auf Null zu setzen:

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

Versuchen Sie auch, anstatt den Header für die Inhaltslänge zu berühren, einen leeren POST body. Abhängig vom Typ des HTTP-Servers, auf den Sie posten, unterscheidet sich das Verhalten geringfügig (IIS, LightHTTPD, Apache). .

Leerer Pfostenkörper ähnlich:

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

19
raidenace

Sie haben vergessen, das Zitat zu schließen:

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

1
Neal Garrett