GAE, PHP и GCM: не удалось открыть поток: HTTP-запрос не удался! Метод HTTP/1.0 405 не разрешен

Я разрабатываю веб-приложение (используя GAE для PHP), которое уведомляет клиентов Android (через GCM - Google Cloud Messaging), когда какой-либо контент доступен для загрузки.

Следующий PHP script должен выполнить работу:

$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.

Ответ 1

Я наконец понял, что происходит.

HTTP/1.0 405 Method Not Allowed был связан с 'method' => 'post'.

Поверьте мне, просто изменив его на 'method' => 'post' (обратите внимание на прописные буквы!) сделал трюк.