Sto provando a configurare google cloud messaging per la mia app e sto utilizzando Google App Engine per il mio server. Ho la mia chiave API ma non riesco a stabilire una connessione con i server di Google Cloud. Ecco il mio codice.Impossibile collegarsi al server Google Cloud Messaging (GCM) utilizzando Google App Engine (GAE)
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://android.googleapis.com/gcm/send");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("registration_id", regId));
nameValuePairs.add(new BasicNameValuePair("data.message", messageText));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
post.setHeader("Authorization", "key=*MY_API_KEY_HERE*");
post.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
Header[] s=post.getAllHeaders();
System.out.println("The header from the httpclient:");
for(int i=0; i < s.length; i++){
Header hd = s[i];
System.out.println("Header Name: "+hd.getName()
+" "+" Header Value: "+ hd.getValue());
}
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
Quando guardo il registro, le intestazioni vengono configurate correttamente. Tuttavia, ottengo un errore che dice
org.apache.http.impl.client.DefaultRequestDirector tryConnect: eccezione di I/O (java.net.SocketException) catturati durante la connessione a host di destinazione: Autorizzazione negata: Tentativo per accedere a un destinatario bloccato senza autorizzazione. (mapped-IPv4)
Ho attivato il servizio di Google Cloud nella console delle API di Google e ho controllato la mia chiave API un paio di volte. Non ho idea del motivo per cui mi sto rifiutando. C'è un barattolo di cui ho bisogno in guerra o qualcosa che devo mettere nel manifest?
Grazie per aver letto questo !! Mark
E 'possibile che si definito un insieme di indirizzi IP autorizzati con la tua chiave API e l'IP che stai cercando di connettere a GCM non è presente nell'elenco? – Eran
No, l'accesso API è impostato su qualsiasi IP consentito. –
Da dove ricevi la chiave API?Tutto quello che riesco a trovare è una coppia di chiavi. –