Próbuję skonfigurować Google Cloud Messaging dla mojej aplikacji i używam Google App Engine na moim serwerze. Mam klucz API, ale nie mogę nawiązać połączenia z serwerami Google do przesyłania wiadomości w chmurze. Oto mój kod.Nie można połączyć się z serwerem Google Cloud Messaging (GCM) za pomocą 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();
}
Kiedy patrzę na dziennik, nagłówki są ustawiane prawidłowo. Jednakże pojawia się błąd, który mówi
org.apache.http.impl.client.DefaultRequestDirector tryConnect: I/O wyjątek (java.net.SocketException) złowionych po podłączeniu do hosta docelowego: Permission denied: Próba aby uzyskać dostęp do zablokowanego odbiorcy bez pozwolenia. (zmapowany-IPv4)
Włączyłem komunikację w chmurze Google w konsoli Google APIs i kilka razy sprawdziłem klucz API. Nie mam pojęcia, dlaczego mnie odrzucono. Czy jest jakiś słoik na wojnie, czy coś, co muszę umieścić w manifeście?
Dzięki za przeczytanie tego! Mark
Czy to możliwe, że zdefiniował zestaw białych list adresów IP z kluczem API, a adres IP, z którym próbujesz się połączyć z GCM, nie znajduje się na tej liście? – Eran
Nie, dostęp API jest ustawiony na dowolny dozwolony adres IP. –
Skąd czerpiesz swój klucz API?Wszystko, co mogę znaleźć, to kluczowa para. –