2012-07-12 17 views
7

के माध्यम से मुझे कंपनी प्रॉक्सी के माध्यम से किसी डिवाइस को संदेश भेजने में परेशानी हो रही है।
मैं गूगल साइट पर GCM ट्यूटोरियल किया है और सफलतापूर्वक एंड्रॉयड एमुलेटर, साथ और भी मेरी अंत में सर्वर पर गूगल के सर्वर पर एक डिवाइस पंजीकृत किया है।
इसके लिए मुझे कंपनी प्रॉक्सी से गुज़रना पड़ा, इसे एमुलेटर के एक्सेस पॉइंट में सेट करना पड़ा। अब मेरी समस्या मेरे सर्वर से एक ही प्रॉक्सी के माध्यम से डिवाइस पर एक संदेश भेज रही है। मैं डेमो जो संदेश भेजने के लिएGoogle क्लाउड मैसेजिंग जीसीएम प्रॉक्सी

com.google.android.gcm.server.Sender 

सहायक वर्ग का उपयोग करता है से सर्वलेट कोड का उपयोग कर रहा हूँ।

मैं बिल्ला 7.

पर सर्वलेट्स मैं प्रॉक्सी अप catalina.properties में स्थापित करने के तो जैसे दायर की कोशिश की है चल रहा हूँ।

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

और मैंने नीचे दिए गए सर्वलेट के अंदर गुणों को सेट करने का प्रयास किया है।

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

लेकिन फिर भी मुझे टाइमआउट मिलता है। मुझे इसकी कंपनी प्रॉक्सी पता है क्योंकि मुझे घर पर काम करने वाला मैसेजिंग मिला है जहां मेरे पास कोई प्रॉक्सी नहीं है।

मैंने जावा कोड में बनाई गई प्रॉक्सी ऑब्जेक्ट देखी है और उसके बाद एक कनेक्शन बनाया है, लेकिन मुझे नहीं लगता कि यह उपयोग करने योग्य है क्योंकि मैं संदेश भेजने के लिए प्रेषक सहायक वर्ग का उपयोग कर रहा हूं।

इस लाइन है कि एक समय समाप्ति में विफल हो जाता है।

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

किसी भी मदद की सराहना की जाएगी।

सादर

विधेयक

+0

ठीक मैं इस के साथ थोड़ा प्रगति की है। मुझे पता चला कि आउटगोइंग संदेश पोर्ट 443 पर एसएसएल का उपयोग कर रहा था। इसलिए मैंने http proxy के समान मूल्यों का उपयोग करके catalina.properties फ़ाइल में https प्रॉक्सी के लिए एक प्रविष्टि जोड़ा और यह संदेश को बाहर जाने की अनुमति देने लग रहा था। हालांकि संदेश एमुलेटर तक नहीं पहुंचता है और इसके बजाय मुझे निम्नलिखित बताते हुए लॉगकैट में एक त्रुटि मिलती है: [GTalkConnection.12] doConnect: mtalk.google.comx228 से कनेक्ट XMPPError पकड़ा गया: - जेवा.net के कारण। सॉकेट अपवाद: ऑपरेशन का समय ने मुझे आश्चर्यचकित कर दिया क्योंकि मैंने सोचा था कि सेवा पोर्ट 5228 का उपयोग करके पंजीकृत है। – billby

उत्तर

8

ठीक है, मैं अंत में यह काम कर रहा है। मेरी टिप्पणी में मैंने उल्लेख किया कि मैं संदेश भेजने में सफल रहा हूं, लेकिन एम्यूलेटर इसे प्राप्त नहीं कर रहा था। मैं अपनी पिछली सलाह का पालन करना भूल गया था और कमांड लाइन से एम्यूलेटर को प्रॉक्सी पैरामीटर के साथ चला गया था:

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

तो संक्षेप में, मेरी प्रारंभिक समस्या यह थी कि मैंने जीसीएम के साथ और मेरे स्थानीय सर्वर के साथ एम्यूलेटर पंजीकृत किया था, लेकिन जब मैंने संदेश भेजा था तो मुझे टाइमआउट मिल रहा था।

मैं शुरू में सोचा था कि यह फ़ायरवॉल था तो मैं कुछ शोध किया और tomcats catalina.properties फ़ाइल में प्रॉक्सी की स्थापना की। इससे कोई फर्क नहीं पड़ता।

मैं "चार्ल्स" वेब प्रॉक्सी डिबगर सॉफ्टवेयर का इस्तेमाल किया देखने के लिए जहां संदेश को भेजने के लिए प्रयास किया गया था और यह 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 

तब मुझे याद आया कि आपको प्रॉक्सी का उपयोग करने के लिए कमांड लाइन के साथ एमुलेटर शुरू करने की आवश्यकता है। एक बार मैंने यह किया कि मेरे एमुलेटर पर संदेश की बाढ़ दिखाई दी!

तो आखिरकार मैं इसे खत्म करने के अंत में काम कर रहा हूं। मुझे जीसीएम पूरी तरह से मेरी कंपनी फ़ायरवॉल में काम करने के लिए लगभग एक सप्ताह का समय लगता है, इसलिए उम्मीद है कि यह पोस्ट भविष्य में ऐसा करने वाले कुछ अन्य गरीबों की मदद कर सकती है।

चियर्स

विधेयक

संबंधित मुद्दे