Я разрабатываю веб-приложение (используя GAE для PHP), которое уведомляет клиентов Android (через GCM – Google Cloud Messaging), когда какой-либо контент доступен для загрузки.
Следующий PHP-скрипт должен работать:
$json = array( 'data' => array( ... ), 'registration_ids' => array( ... ) ); $data = json_encode( $json ); $context = array( 'http' => array( 'method' => 'post', 'header' => 'Authorization: key=MY_SECRET_KEY' . "\r\n" . 'Content-Type: application/json' . "\r\n", 'content' => $data ) ); $context = @stream_context_create($context); $result = @file_get_contents("https://android.googleapis.com/gcm/send", false, $context);
Вышеприведенный код работает правильно, когда приложение развернуто, но не выполняйте его в моей локальной среде разработки.
В локальной среде разработки $result
равен null
а file_get_contents
"echo" следующее предупреждение failed to open stream: HTTP request failed! HTTP/1.0 405 Method Not Allowed
failed to open stream: HTTP request failed! HTTP/1.0 405 Method Not Allowed
.
Наконец я понял, что происходит.
HTTP/1.0 405 Method Not Allowed
был связан с 'method' => 'post'
.
Поверьте мне, просто заменив его на 'method' => 'POST'
(обратите внимание на верхний регистр!) Сделал трюк.