2012-07-12 13 views
7

Tengo problemas para enviar un mensaje a un dispositivo a través del proxy de la compañía.
He hecho el tutorial de GCM en el sitio de google y he registrado con éxito un dispositivo en los servidores de google con el emulador de Android, y también en el servidor en mi extremo.
Para esto tuve que pasar por el proxy de la compañía, configurándolo en el punto de acceso del emulador. Ahora el problema que tengo es enviar un mensaje de mi servidor al dispositivo a través del mismo proxy. estoy usando el código del servlet de la demostración que utiliza la clase de ayudaGoogle nube mensajería GCM a través del proxy

com.google.android.gcm.server.Sender 

para enviar el mensaje.

Me postulo los servlets en Tomcat 7.

He intentado fijar el proxy en las catalina.properties archivo como tal.

http.proxyHost=proxy.company.com 
http.proxyPort=8080 

Y he intentado establecer propiedades dentro del servlet como a continuación.

System.setProperty("http.proxyHost", "proxy.company.com"); 
System.setProperty("http.proxyPort", "8080"); 

Pero todavía me sale el tiempo de espera. Sé que es el proxy de la compañía porque recibí el mensaje de trabajo en mi casa, donde no tengo proxy.

He visto un objeto proxy creado en el código java y luego una conexión creada con él, pero no creo que se pueda usar aquí ya que estoy utilizando la clase de ayuda del remitente para enviar el mensaje.

Esta es la línea que falla en un tiempo de espera.

Result result = sender.send(message, registrationId, 5); 

Cualquier ayuda sería apreciada.

Saludos

Bill

+0

Aceptar He progresado poco con esto. Descubrí que el mensaje saliente usaba SSL en el puerto 443. Así que agregué una entrada para el proxy https en el archivo catalina.properties, usando los mismos valores que el proxy http y que parecía permitir que el mensaje se apagara. Sin embargo, el mensaje no llega al emulador y en su lugar aparece un error en logcat que dice lo siguiente: [GTalkConnection.12] doConnect: cogido XMPPError que se conecta a mtalk.google.com:5228 .: - causado por: java.net. SocketException: la operación agotó el tiempo de espera Esto me sorprendió ya que pensé que el servicio se registró utilizando el puerto 5228. – billby

Respuesta

8

bien, finalmente tiene que trabajar. En mi comentario mencioné que había logrado enviar el mensaje, pero el emulador no lo recibía. Había olvidado seguir mi propio consejo anterior y ejecutar el emulador desde la línea de comandos con los parámetros del proxy establecidos de esta manera:

emulator.exe -avd avd22google -http-proxy proxy.company.com:8080 -debug-proxy

Para resumir, mi problema inicial fue que había registrado el emulador en el GCM y con mi servidor local, pero cuando hice clic en enviar mensaje estaba obteniendo un tiempo de espera.

Inicialmente pensé que era el firewall, así que investigué un poco y configuré el proxy en el archivo tomcats catalina.properties. Esto no hizo diferencia.

que utiliza el software "Charles" proxy web depurador para ver donde el mensaje estaba tratando de ser enviado a, y se le ocurrió https://android.googleapis.com:443

Así que inicialmente he añadido lo siguiente a mi archivo catalina.properties:

https.proxyHost=proxy.company.com 
https.proxyPort=443 

Todavía no funcionó.Un colega mío me dijo que nuestro proxy de empresa se ocupa de todo tipo de peticiones a través del puerto 8080, por lo que cambió el la línea poort a:

https.proxyPort=8080 

Esto permitió que el mensaje sea enviado. Pero luego el mensaje no llegaba al emulador y recibía el siguiente error en LogCat.

[GTalkConnection.12] doConnect: caught XMPPError connecting to mtalk.google.com:5228.: -- caused by: java.net.SocketException: The operation timed out 

Entonces recordé que necesita para iniciar el emulador con la línea de comandos para conseguir que se utilice el proxy. ¡Una vez que hice esto, una avalancha de mensajes apareció en mi emulador!

Así que finalmente lo tengo trabajando de punta a punta. Me llevó alrededor de una semana obtener el funcionamiento completo de GCM dentro del firewall de mi empresa, así que espero que esta publicación pueda ayudar a otros pobres a hacer esto en el futuro.

aplausos

Bill

Cuestiones relacionadas