android– 谷歌云消息GCM通过代理

android– 谷歌云消息GCM通过代理,第1张

概述我无法通过公司代理向设备发送消息.我已经在google网站上完成了GCM教程,并且已经使用android模拟器在google服务器上成功注册了一个设备,而且在我的服务器端.为此,我必须通过公司代理,将其设置在模拟器的访问点.现在我遇到的问题是通过相同的代理从我的服务器向设备发送消息.我正

我无法通过公司代理向设备发送消息.
我已经在Google网站上完成了GCM教程,并且已经使用android模拟器在Google服务器上成功注册了一个设备,
而且在我的服务器端.
为此,我必须通过公司代理,将其设置在模拟器的访问点.
现在我遇到的问题是通过相同的代理从我的服务器向设备发送消息.
我正在使用演示中使用的servlet代码

com.Google.androID.gcm.server.Sender

帮助类发送消息.

我在tomcat 7上运行servlet.

我已经尝试在catalina.propertIEs文件中设置代理,就像这样.

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

我已经尝试在servlet中设置属性,如下所示.

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

但我还是暂停了.
我知道它的公司代理,因为我得到消息在家里工作,我没有代理.

我已经看到在java代码中创建了一个代理对象,然后用它创建了一个连接,但我不认为这是可用的,因为我使用Sender helper类来发送消息.

这是超时失败的行.

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

任何帮助,将不胜感激.

问候

法案

解决方法:

好吧,我终于有了它的工作.在我的评论中,我提到我已成功发送消息,但模拟器没有收到它.我忘了按照我之前的建议,从命令行运行模拟器,代理参数设置如下:

emulator.exe -avd avd22Google -http-proxy proxy.company.com:8080 -deBUG-proxy

总而言之,我最初的问题是我在GCM和我的本地服务器上注册了模拟器,但是当我点击发送消息时我得到了超时.

我最初认为它是防火墙所以我做了一些研究并在tomcats catalina.propertIEs文件中设置了代理.
这没有任何区别.

我使用“查尔斯”Web代理调试器软件来查看邮件尝试发送到哪里,它提出了https://android.googleapis.com:443

所以我最初将以下内容添加到我的catalina.propertIEs文件中:

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

它仍然无法正常工作.我的一位同事告诉我,我们的公司代理通过端口8080处理所有类型的请求,所以我将poort行更改为:

https.proxyPort=8080

这允许发送消息.
但后来消息没有通过模拟器,我在LogCat中收到以下错误.

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

然后我记得您需要使用命令行启动模拟器以使其使用代理.一旦我这样做,我的模拟器上就出现了大量的消息!

所以我终于让它端到端地工作了.我花了大约一个星期的时间让GCM在公司的防火墙内完全工作,所以希望这篇文章可以帮助其他一些可怜的人在将来做这件事.

干杯

法案

总结

以上是内存溢出为你收集整理的android – 谷歌云消息GCM通过代理全部内容,希望文章能够帮你解决android – 谷歌云消息GCM通过代理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1097385.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存