A continuación aparece la excepción que recibo aunque mi clave de API para servidor y aplicación de navegador sea válida. Lo revisé usando curl. Envío una solicitud de GCM en formato UTF-8 y JSON. Probándolo desde una red corporativa externa.código de respuesta HTTP 401 en Google GCM
java.io.IOException: Server returned HTTP response code: 401 for URL: https://android.googleapis.com/gcm/send
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993)
at java.net.URLConnection.getContent(URLConnection.java:688)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getContent(HttpsURLConnectionImpl.java:406)
at gcm1.MessageUtil.sendMessage(MessageUtil.java:58)
¿Sé el motivo y la solución para esto?
Para otras personas que están navegando en este momento, si de repente comenzaste a experimentar este error sin hacer ningún cambio específico (la clave del servidor) igual, probablemente necesites importar tu proyecto a Firebase. Ver mi respuesta [aquí] (http://stackoverflow.com/a/37801206/4625829). –