Ich habe Probleme beim Senden einer Nachricht an ein Gerät über den Firmen-Proxy.
Ich habe das GCM-Tutorial auf der Google-Website getan und erfolgreich ein Gerät auf den Google-Servern mit dem Android-Emulator, und auch auf dem Server an meinem Ende registriert.
Dafür musste ich den Firmen-Proxy durchlaufen und ihn im Zugangspunkt des Emulators einstellen. Jetzt ist das Problem, das ich habe, eine Nachricht von meinem Server an das Gerät über den gleichen Proxy zu senden. Ich bin mit dem Servlet-Code aus der Demo, die die KlasseGoogle Cloud Messaging GCM über Proxy
com.google.android.gcm.server.Sender
Helfer verwendet die Nachricht zu senden.
Ich betreibe die Servlets auf tomcat 7.
habe ich versucht, den Proxy-up in den catalina.properties wie so Datei einstellen.
http.proxyHost=proxy.company.com
http.proxyPort=8080
Und ich habe versucht, Eigenschaften im Servlet selbst wie unten eingestellt.
System.setProperty("http.proxyHost", "proxy.company.com");
System.setProperty("http.proxyPort", "8080");
Aber immer noch bekomme ich die Auszeit. Ich weiß, es ist der Firmen-Proxy, weil ich das Messaging zu Hause funktioniert, wo ich keinen Proxy habe.
Ich habe gesehen, ein Proxy-Objekt im Java-Code erstellt und dann eine Verbindung damit erstellt, aber ich denke nicht, dass hier verwendbar ist, da ich Sender Helper-Klasse zum Senden der Nachricht verwenden.
Dies ist die Zeile, die bei einem Timeout fehlschlägt.
Result result = sender.send(message, registrationId, 5);
Jede Hilfe wäre willkommen.
Grüße
Bill
OK Ich habe mit diesem etwas fortgeschritten. Ich entdeckte, dass die ausgehende Nachricht SSL auf Port 443 verwendete. Daher fügte ich in der Datei catalina.properties einen Eintrag für den https-Proxy hinzu, der die gleichen Werte wie der HTTP-Proxy verwendete und der die Nachricht anscheinend ausgehen ließ. Die Nachricht erreicht den Emulator jedoch nicht und stattdessen erhalte ich einen Fehler in logcat, der folgendes anzeigt: [GTalkConnection.12] doConnect: hat XMPPError beim Verbinden mit mtalk.google.com:5228 .: abgefangen - verursacht durch: java.net. SocketException: Zeitüberschreitung bei der Operation Das überraschte mich, als ich dachte, dass der Dienst über Port 5228 registriert wurde. – billby