我无法通过公司代理向设备发送消息。
我已经完成了谷歌网站上的GCM教程,并成功地在谷歌服务器上用android模拟器 注册了一个设备,并且也在我的服务器上注册了该设备。
为此我必须通过公司代理,将其设置在模拟器的访问点中。 现在我遇到的问题是通过相同的代理从我的服务器向设备发送消息。 我使用从使用Google代理通过代理传递GCM
com.google.android.gcm.server.Sender
辅助类来发送消息的演示servlet代码。
我跑我已经尝试设置代理了在catalina.properties文件,像这样在Tomcat 7
Servlet的。
http.proxyHost=proxy.company.com
http.proxyPort=8080
我试过在下面的servlet中设置属性。
System.setProperty("http.proxyHost", "proxy.company.com");
System.setProperty("http.proxyPort", "8080");
但我仍然得到超时。 我知道它的公司代理服务器,因为我的邮件在家里没有代理服务器。
我看到了一个在java代码中创建的代理对象,然后创建了一个连接,但我不认为这是可用的,因为我使用发件人帮助器类来发送消息。
这是在超时失败的行。
Result result = sender.send(message, registrationId, 5);
任何帮助,将不胜感激。
问候
比尔
OK我有这种略带进展。我发现传出的消息是在端口443上使用SSL。因此,我在catalina.properties文件中添加了一个用于https代理的条目,使用与http代理相同的值,并且似乎允许消息传出。然而,这个消息没有到达模拟器,而是我在logcat中得到一个错误,指出以下内容:[GTalkConnection.12] doConnect:抓住XMPPError连接到mtalk.google.com:5228 .: - 由:java.net引起。 SocketException:操作超时 这让我感到惊讶,因为我认为服务是使用端口5228注册的。 – billby 2012-07-13 06:53:56