Неавторизованный при вызове Google GCM

Я пытаюсь использовать Google GCM для отправки push-уведомлений. Но получите WebException, в котором говорится, что удаленный сервер возвращает 401 неавторизованный. Я не могу понять, почему он не работает.

Кто знает, почему это не работает?

Вот мой код:

ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate); HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send"); Request.Method = "POST"; Request.KeepAlive = false; string postData = "{ 'registration_ids': [ '"+registrationId+"' ], 'data': {'message': '"+message+"'}}"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); Request.ContentType = "application/json"; //Request.ContentLength = byteArray.Length; //Request.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + AuthString); Request.Headers.Add(HttpRequestHeader.Authorization, "Authorization: key=AIzaSyCEygavdzrNM3pWNPtvaJXpvW66CKnjH_Y"); //-- Delegate Modeling to Validate Server Certificate --// //-- Create Stream to Write Byte Array --// Stream dataStream = Request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); //-- Post a Message --// WebResponse Response = Request.GetResponse(); HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode; if (ResponseCode.Equals(HttpStatusCode.Unauthorized) || ResponseCode.Equals(HttpStatusCode.Forbidden)) { var text = "Unauthorized - need new token"; } else if (!ResponseCode.Equals(HttpStatusCode.OK)) { var text = "Response from web service isn't OK"; } StreamReader Reader = new StreamReader(Response.GetResponseStream()); string responseLine = Reader.ReadLine(); Reader.Close(); 

Введите описание изображения здесь

Даниэль – Чувак, есть проблема с документацией GCM! Используйте ключ браузера в качестве ключа авторизации в месте ключа API Сервера. Это будет работать.

Хорошо, я просто стреляю в темноту. Взгляните на эту строку:

 Request.Headers.Add(HttpRequestHeader.Authorization, "Authorization: key=AIzaSyCEygavdzrNM3pWNPtvaJXpvW66CKnjH_Y"); 

Не должно быть:

 Request.Headers.Add(HttpRequestHeader.Authorization, "key=AIzaSyCEygavdzrNM3pWNPtvaJXpvW66CKnjH_Y"); 

Поскольку вы говорите, что это заголовок авторизации, нет необходимости снова добавлять «Авторизация:», не так ли?

Кроме того, убедитесь, что константа строки «HttpRequestHeader.Authorization» – это «Авторизация».

Intereting Posts
Шифрование и расшифровка с помощью режима AES ECB «BadPaddingException» в некоторых случаях Восстановить кнопку findViewWithTag не работает? Разница между getExtras (name) .getString и getIntent (). GetStringExtra (name) Альтернатива com.android.camera.action.CROP? Phonegap – невозможно загрузить архив с сервера Как создать динамическое намерение в Android? Android – получить время следующего сигнала тревоги Значение Android … типа java.lang.String не может быть преобразовано в JSONArray Правильно загружать 24-битные растровые данные в 32-битный объект Bitmap Покупка Android-приложений – RESULT_ITEM_UNAVAILABLE G + с помощью Служб Google Play для доступа к электронной почте пользователя. Отсутствует android.permission.GET_ACCOUNTS Обрезать изображение с распознаванием лиц в android Android – Загрузка, пожалуйста, подождите IOS и Android Algorithm или библиотека для оперения краев изображений, похожих на фотошоп Только слайд Половина просмотра представления пейджера в Android