Ошибка 411, несмотря на наличие Content-Length

Гугл выдал ошибку 411, но Content-Length я уже поставил в шапку. Как исправить эту ошибку?

$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);

person propostaff    schedule 28.02.2012    source источник
comment
Любые идеи? Когда я удаляю $header[] = 'Content-Length:' . $длина; и curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data); - код работает хорошо и отправляет мне все идентификаторы рекламных акций в формате xml   -  person propostaff    schedule 28.02.2012


Ответы (2)


Удалите часть Content-Length из массива заголовков. cURL добавляет ее автоматически. Так что вам не нужно отправлять это. Удалять:


//remove following
$header[] = 'Content-Length: ' . $length;

Надеюсь, поможет

person Sudhir Bastakoti    schedule 28.02.2012
comment
Ошибка HTTP 1.1 411 относится к требуемой длине: сервер отказывается принимать запрос без определенной длины содержимого. Но я думал, что это добавляется самим действием завитка. - person Raptor; 28.02.2012
comment
Это не помогло. Все та же ошибка 411.. - person propostaff; 28.02.2012

Попробуй это:

    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);

Вам не хватает длины/количества опубликованных полей.

person Maz    schedule 28.02.2012