Ошибка cURL «Требуется длина контента»… 3 дня поиска, безуспешноPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ошибка cURL «Требуется длина контента»… 3 дня поиска, безуспешно

Сообщение Anonymous »

Прежде чем вы спросите: я уже проверил все подобные вопросы, на которые уже был ответ, и ни одно из предложенных решений не помогло. Поэтому я надеюсь, что кто-нибудь сможет заметить ошибку в моем коде.

При отправке сообщения cURL в Google мне возвращается ошибка 411: «Запросы POST требуют заголовка Content-length»

Код: Выделить всё

//Info required to authenticate
$URL = "https://www.google.com/accounts/ClientLogin";
$POST = http_build_query(array(
'Email' => 'XXXXXXX@gmail.com',
'Passwd' => 'XXXXXXXXXXXXXXX',
'source' => 'primary',
'service' => 'cl'
));

$ch = curl_init( $URL );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch); //returns SID=nLSID=nAuth= or ERROR=
if ( curl_errno($ch) )
die( 'Error contacting server' );

//Successful auth results in http code 200
if ( curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 )
die( 'Failed to authenticate' );

//Extract auth code - Authorization: GoogleLogin auth=yourAuthToken
$auth_code = substr($response, strpos($response, 'Auth=')+5);

//We're done here
curl_close($ch);

$url = "https://www.googleapis.com/calendar/v3/calendars/".urlencode('XXXXXXXXXXXXX@developer.gserviceaccount.com')."/events?sendNotifications=true&pp=1&key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx";

$post_data = http_build_query(array(
"end" => array("dateTime" => "2013-14-11T10:40:00.000-07:00"),
"start" => array("dateTime" => "2013-14-11T10:00:00.000-07:00"),
"summary" => "my_summary",
"description" => "my_description"
));

$headers = array(
'Authorization: GoogleLogin auth='.$auth_code.'',
'Content-Type: application/json'
);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch2);

curl_close($ch2);

echo '
'.print_r($output).'';
Что я пробовал:

-Добавление длины контента: '.strlen($post_data)

-Тип контента «x-www-form-urlencoded»

-с использованием очень простого json строка для post_data, чтобы я не использовал http_build_query

-Пытаюсь отправить ее как PUT вместо POST

-И еще несколько вещей, произошедших за последние несколько дней, которые я сейчас не могу вспомнить.

Цель: добавить событие только в раздел «МОЕ». календарь с использованием только PHP без каких-либо шагов аутентификации, требуемых пользователем. Все это должно иметь возможность запускаться в асинхронном режиме внутри функции PHP (вызывается через AJAX).

ПРИМЕЧАНИЕ. Не используйте Wordpress или любую другую CMS.

-Кайл

Подробнее здесь: https://stackoverflow.com/questions/204 ... ng-no-luck
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»