2014-01-03 3 views
0

Я пытаюсь обновить таблицу fussion Google через запрос на отправку php. URL работает отлично на Auth PlayGround. См. Изображение ниже. Сожалею! Переполнение стека не позволяет мне размещать изображение, пожалуйста, используйте эту ссылку. ImageContent-length in php file_get_content post request

Но когда я пытаюсь сделать то же самое с помощью php post request file_get_content, он снимает с ошибкой «411 Length Required». Какую длину запрашивает код. Очевидно, что это не длина контента, потому что в этом случае «нуль».

<?php 
$url = https://www.googleapis.com/fusiontables/v1/query?sql=INSERT INTO 1f_Z_********bQ-br8g17rFWBknri03fz-EQc (Name, Phone) VALUES ('Anees Hameed', '9895435751') 
$Post = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Content-type: application/json', 
     'header' => 'GData Version: 3.0', 
     'header' => 'Authorization: Bearer '.$_Session[access_token] 
    ) 
); 
$Post= stream_context_create($Post); 
$request = file_get_content($url, false, $Post); 
?> 

Как избавиться от этой ошибки.

+0

Используйте 'curl' вместо' file_get_content'. –

+0

завиток не разрешен. Я использую Google App Engine, где завиток не допускается :( –

ответ

0

Прежде всего, что это за URL в вашем коде ?! и вы не завернули его в кавычки.

411 ошибка

Эта ошибка редко происходит в большинстве веб-трафика, в частности, когда система клиент веб-браузер. Проблема может быть решена только с помощью , анализируя, что ваша клиентская система пытается сделать, а затем обсудите с вашим провайдером , почему веб-сервер ожидает спецификации Content-Length.

и ваш код:

<?php 
$url = "https://www.googleapis.com/"; 
$content = "this is something to be sent to the server"; 
$Post = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Content-type: application/json', 
     'header' => 'GData Version: 3.0', 
     'header' => 'Authorization: Bearer '.$_Session[access_token], 
     'header' => 'Content-Length: '.strlen($content) 
    ) 
); 
$Post= stream_context_create($Post); 
$request = file_get_content($url, false, $Post); 
?> 
+0

Opps Я пропустил ставить кавычки, Url же ** $ url = "https://www.googleapis.com/fusiontables/v1/query? sql = INSERT INTO 1f_Z _ ******** bQ-br8g17rFWBknri03fz-EQc (имя, телефон) VALUES ('Anees Hameed', '9895435751') "; ** Это отлично работает на Google [Auth Playground ] (https://developers.google.com/oauthplayground/) .... В этом запросе нет содержания тела, все отправляется по URL-адресу в качестве почтового запроса и, следовательно, нет длины контента. –

+0

@AneesHameed вы должны отправить образец контента, чтобы увидеть поведение сервера. – revo

+0

@AneesHameed, и лучше «urlencode» ваш url. – revo