411 Error Even Though Content-Length is There [closed]
-
13-11-2019 - |
Question
Google displayed a 411 error, but I already put the Content-Length in the header. How do I fix this error?
$authToken = getAuthorizationToken();
$xml_data = '<?XML version="1.0"?>
<Batch>
<Remove>
<Promotions>
<Promotion id="d5111e0a"/>
</Promotions>
</Remove>
</Batch>';
$length = strlen($xml_data);
$ch = curl_init("http://www.google.com/cse/api/default/promotions/pe0dnd27zuc");
$header = array();
$header[] = 'Authorization: GoogleLogin auth=' . $authToken;
$header[] = 'Content-Type: text/xml';
$header[] = 'Content-Length: ' . $length;
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
Solution
Remove the Content-Length part from your header array.cURL adds it automatically. So you dont need to send that. Remove:
//remove following
$header[] = 'Content-Length: ' . $length;
Hope it helps
OTHER TIPS
Try this:
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch,CURLOPT_POST, $length); //count of your posted array
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
You are missing the length/count of posted fields.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow