2012-07-12 17 views
7

会社のプロキシ経由でデバイスにメッセージを送信する際に問題が発生しています。
私はGoogleサイトでGCMチュートリアルを行っており、アンドロイドエミュレータ とGoogleサーバー上の端末を正常に登録しました。
私は会社プロキシを経由して、エミュレータのアクセスポイントに設定しなければなりませんでした。 今私が持っている問題は、サーバーから同じプロキシ経由でデバイスにメッセージを送信することです。 私がメッセージを送信するためにGoogleクラウドメッセージングプロキシ経由のGCM

com.google.android.gcm.server.Sender 

ヘルパークラスを使用してデモからサーブレットのコードを使用しています。

は、私はそうのようなファイルをバックアップしcatalina.propertiesでプロキシを設定しようとしたのTomcat 7

上のサーブレットを実行しています。

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

そして、以下のようにサーブレット自体のプロパティを設定しようとしました。

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

ただし、まだタイムアウトが発生します。 私は代理人がいない家庭でメッセージングを手に入れたので、会社のプロキシを知っています。

私は、Javaコードで作成されたプロキシオブジェクトとその後で作成された接続を見ましたが、メッセージを送信するためにSenderヘルパークラスを使用しているので、ここでは使用できないと思います。

これはタイムアウトに失敗した行です。

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

助けてください。

よろしく

ビル

+0

OK、私はこれで少し進んでいます。私は、発信メッセージがポート443でSSLを使用していることを発見しました。したがって、HTTPプロキシと同じ値を使用して、メッセージが出るように思われるhttpsプロキシのエントリをcatalina.propertiesファイルに追加しました。しかし、メッセージはエミュレータに届かず、代わりに次のようなエラーメッセージが表示されます。[GTalkConnection.12] doConnect:mtalk.google.com:5228に接続しているXMPPErrorをキャッチしました。: - 原因:java.net。 SocketException:操作がタイムアウトしました サービスがポート5228を使用して登録されていると思ったので、これは私を驚かせました。 – billby

答えて

8

さてさて、私は最終的にそれが働いています。私のコメントでは、私はメッセージの送信に成功したと言いましたが、エミュレータはそれを受信して​​いませんでした。私は自分自身の以前のアドバイスに従うことを忘れていました。コマンドラインから次のようにプロキシパラメータを設定してエミュレータを実行しました。

私の最初の問題は、GCMとローカルサーバでエミュレータを登録したことですが、送信メッセージをクリックしたときにタイムアウトが発生していました。

私は最初はファイアウォールだと思ったので、いくつかの調査を行い、tomcats catalina.propertiesファイルでプロキシを設定しました。 これは何の違いもありませんでした。

私は、メッセージがに送信されるようにしようとしていた場所を確認するために、「チャールズ」のWebプロキシのデバッガソフトウェアを使用し、それはそれで、私が最初に私は私のcatalina.propertiesファイルに以下を追加https://android.googleapis.com:443

を思い付いた:

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

まだ動作しませんでした。これは、メッセージが送信されるように許さ

https.proxyPort=8080 

:私の同僚は、私達の会社のプロキシがポート8080を介して要求のすべての種類を扱うことを私に言ったので、私はにpoortラインを変更しました。 しかし、メッセージがエミュレータに届かず、LogCatで次のエラーが発生しました。

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

次に、プロキシを使用するにはコマンドラインでエミュレータを起動する必要があることを思い出しました。私がこれをした後、私のエミュレータには洪水のメッセージが現れました!

私はついにそれを終わらせて働かせました。 GCMを会社のファイアウォール内で完全に使用できるようになるまでには1週間ほどかかりました。この投稿は将来的にこれを行う他の貧しい人々を助けることができれば幸いです。

歓声

ビル

関連する問題