2011-05-30 23 views
45

पर एक वेब सेवा के लिए एक एंड्रॉइड डिवाइस से कनेक्ट करें मैंने एंड्रॉइड एप्लिकेशन के लिए एक वेब सेवा लागू की है। वेब सेवा मेरे स्थानीय होस्ट (1 9 2.168.1.2) पर चल रही है। एंड्रॉइड एमुलेटर का उपयोग करके मैं वेब सेवा से जुड़ने में सफल रहा। मैंने वेब सेवा पर डिबगिंग मोड का उपयोग करके अपने एंड्रॉइड डिवाइस को कनेक्ट करने का प्रयास किया लेकिन यह काम नहीं किया। तो मेरा सवाल यह है कि यदि एक असली डिवाइस का उपयोग किये बिना मेरे स्थानीय होस्ट (1 9 2.168.1.2) पर चल रहे किसी वेब डिवाइस को इस वेब सेवा से कनेक्ट करना संभव है?स्थानीय होस्ट

+4

+1। – Shachi

+0

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server – Mateusz

उत्तर

13

वैसे आपका लोकहोस्ट 127.0.0.1 (या :: 1) है और आपका लैन आईपी 1 9 2.168.1.2 है। आपके पीसी के अंतर्गत जुड़े प्रत्येक पीसी/डिवाइस आईपी पर आपकी webservice तक पहुंच सकते हैं 192.168.1.2

आपका एंड्रॉइड डिवाइस उसी लैन के तहत वाईफ़ाई कनेक्शन के माध्यम से इतना जुड़ा होना चाहिए ताकि वह 1 9 2.168.1.2 के साथ बात कर सके।

यदि आप एक ही लैन के तहत अपने एंड्रॉइड डिवाइस को कनेक्ट नहीं कर सकते हैं, तो आपके पास अपने सार्वजनिक आईपी से सभी आने वाले ट्रैफ़िक (शायद केवल http ट्रैफिक) को रीडायरेक्ट करने के लिए आपके राउटर/फ़ायरवॉल के साथ खेलने की आवश्यकता है। आप निजी आईपी (192.168.1.2)

आशा इस मदद

+0

इससे मदद मिली .. thnks ... – Shachi

32

आप पहले से ही अपनी समस्या को हल किया? मुझे आपके जैसी समस्या भी मिली है। ये वे चरण हैं जिन्हें मैंने पहले ही किया है:

  1. लैन केबल अनप्लग करें या अपने पीसी से किसी भी अन्य इंटरनेट कनेक्शन को बंद करें।
  2. यूएसबी का उपयोग कर अपने एंड्रॉइड मोबाइल को अपने पीसी से कनेक्ट करें।
  3. यूएसबी टेदरिंग
  4. पर अपने पीसी पर वापस चालू करें। अपने आईपी की जांच करें। मेरा 1 9 2.168.42.37
  5. अपने पीसी में अपने webservice ऐप की जांच करें। मान लें कि http://192.168.42.37/webserviceapp
  6. अपने एंड्रॉइड मोबाइल पर वापस जाएं। इस यूआरएल http://192.168.42.37/webserviceapp

अब आप अपने मोबाइल फोन से अपने पीसी में अपने webservice ऐप तक पहुंच सकते हैं।

+0

प्लस 1 "यूएसबी टेदरिंग चालू करें" – Mzn

+0

@Zulkifli का पालन किया हालांकि ये कदम काम करते हैं लेकिन काम करते हैं ... [यह मेरा सवाल है] (http://stackoverflow.com/questions/21879151/calling-web-service-from-android-device) जिसके लिए मुझे जवाब मिल रहा है ... कृपया मदद –

+0

ओएस एक्स उपयोगकर्ताओं के लिए, यूएसबी टिथरिंग करने का एक अच्छा तरीका यहां वर्णित है: [HoRNDIS] (http://joshuawise.com/horndis) – averasko

1

यदि आप इंटरनेट पर अपने DEV webservice का खुलासा नहीं करना चाहते हैं तो मैं अन्य उत्तरों के साथ अच्छे दृष्टिकोण के साथ सहमत हूं। हालांकि, अगर आप केवल webservice का पर्दाफाश करते हैं तो यह बहुत आसान है। कई मुफ्त DNS सेवाएं हैं, लेकिन मुझे स्थापित करने के लिए सबसे आसान होने के लिए नो-आईपी नहीं मिला है। मैं इसका उपयोग उस उद्देश्य के लिए करता हूं जिसके बारे में आपने पूछा था; तो मैं एक असली डिवाइस पर अपने DEV webservice के साथ परीक्षण कर सकते हैं।

यदि आप नो-आईपी के साथ जाना चुनते हैं (मुझे उस कंपनी के साथ कोई संबद्धता नहीं है, तो यह केवल एक है जिसे मैंने उपयोग किया है और परिचित हूं), आप http://MyExampleWebServer.no-ip-org जैसे निःशुल्क सार्वजनिक रूप से सुलभ यूआरएल प्राप्त कर सकते हैं, और नो- आईपी ​​में एक उपयोगिता है जिसे आप इंस्टॉल कर सकते हैं, भले ही आप गतिशील आईपी के पीछे हों, यह हमेशा उस यूआरएल से जुड़े सही बाहरी आईपी को बनाए रखेगा। यदि आप अपने घर से काम कर रहे हैं, तो आपको बस यह सुनिश्चित करना होगा कि आप बंदरगाह 80 से अपने आंतरिक 192.x.x.x आईपी पते (या जो भी बंदरगाह आप उपयोग करते हैं, हो सकता है; एसएसएल के लिए 443) पर ट्रैफिक अग्रेषित करें।

यह उतना आसान है जितना आसान है, और अब आप किसी भी डिवाइस से उस webservice को इंटरनेट पर एक्सेस कर सकते हैं।

मैंने इसके साथ काम नहीं किया है, लेकिन मेरा मानना ​​है कि डायंडन्स भी इसी तरह की सेवा प्रदान करता है।

1

मैंने गैसमैस्क और चार्ल्स प्रॉक्सी सर्वर का उपयोग कर मैक पर ऐसा किया है। आपका फोन और आपका कंप्यूटर एक ही नेटवर्क पर होना चाहिए।

कहें कि आप जिस webservice url को एक्सेस करना चाहते हैं वह http://api.xyz.com पर है, तो आप पहले अपने स्थानीयहोस्ट पर यूआरएल इंगित करने के लिए गैसमास्क का उपयोग करते हैं, फिर प्रॉक्सी सर्वर सेट अप करने के लिए चार्ल्स का उपयोग करें। फिर आप अपने फोन पर सेटिंग्स पर जाते हैं, वाई-फाई में जाते हैं, उस नेटवर्क को लंबे समय से दबाएं जिसे आप कनेक्ट कर रहे हैं, संशोधित नेटवर्क चुनें, और चार्ल्स ने आपको प्रॉक्सी सेटिंग्स दर्ज करें।

4

मैं अपनी प्रक्रिया में फेंक दूंगा, क्योंकि एसओ पर कुछ भी मेरे लिए काम नहीं करता है। ये कदम उठाएँ मैं स्थानीय होस्ट पर अपने लैपटॉप (फोन से जुड़े) पर चल रहे वेब सेवा करने के लिए मेरे शारीरिक Android डिवाइस कनेक्ट करने के लिए हुए थे: अपने Android डिवाइस पर

  1. Enable USB debugging

  2. भागो अपने आपकी मशीन पर वेब सेवा। मेरे वेब सेवा स्थानीय होस्ट पर रन, विकास में बंदरगाह 3000: http://localhost:3000/api/...

  3. भागो ifconfig (यूनिक्स), या ipconfig (विंडोज़)

  4. अपने लैन इंटरफेस पर आपकी मशीन का inet पते का पता लगाएं। इंटरफ़ेस wlan0 के लिए मेरा 10.0.0.121 है। बाहरी रूप से, यह 68.43.XX.XXX है, जो वह पता नहीं है जिसका आप उपयोग करना चाहते हैं।
  5. जब से तुम लैन पर आपकी सेवा से कनेक्ट हो रहे लैन IP का उपयोग करें, अन्यथा आप फ़ायरवॉल नियमों
  6. कि आईपी पते के साथ अपने http URL भी निर्माण की वजह से एक econnrefused (कनेक्शन अस्वीकार कर दिया) त्रुटि आ सकती है, और बंदरगाह कि आपकी वेब सेवा चालू है। मेरे लिए, यह http://10.0.0.121:3000/api/...

आप अपने एप्लिकेशन लॉन्च करते हैं, तो आप लॉग में अपने स्थानीय वेब सेवा, Wireshark, आदि के लिए कनेक्शन है, और आप इच्छित गतिविधि/डेटा अपने Android आवेदन में देखना चाहिए चाहिए।

2

मेरे पास एक ही समस्या थी, फिर बहुत कुछ पता चला कि आपको स्पष्ट रूप से अपनी फ़ायरवॉल सेटिंग्स में बदलाव करना है। आपका फ़ायरवॉल आपके कोड को बाहरी स्रोत से एक्सेस करने के लिए अवरुद्ध कर रहा है। तो, आपको बस इतना करना है, फ़ायरवॉल सेटिंग्स पर जाएं, पोर्ट 80 जोड़ें (मेरे मामले में, मैं अपाचे http सर्वर का उपयोग कर रहा हूं) इनबाउंड और आउटबाउंड के लिए। अब, आप इसे अपने फोन के ब्राउज़र http://192.16पर परीक्षण कर सकते हैं। **:। 80/

-3

आप एंड्रॉयड एमुलेटर तो आप एंड्रॉयड एमुलेटर एक आभासी मशीन के अंदर चलाता है क्योंकि http://10.0.2.2:8080/ उपयोग करने के लिए (QEMU) से आपके सिस्टम पर आपके स्थानीय होस्ट बात कर रहे हैं और इसलिए यहां 127.0.0.1 या स्थानीय होस्ट एम्यूलेटर का अपना लूपबैक पता होगा।

0

यह समाधान ग्रहण

में GAE विकास सर्वर

चरण 1 के लिए है: लैन आईपी

जाओ गोटो अपने Windows कमान कंसोल (प्रेस जीत + आर, फिर "cmd" टाइप)। कंसोल में, "ipconfig" दर्ज करें। आप प्रदर्शन की एक सूची देखेंगे। वायरलेस लैन एडाप्टर वाई-फाई के तहत, आईपीवी 4 पता प्राप्त करें। यह कुछ होगा 1 9 2.168.x.x

लैन आईपी: 1 9 2.168.x.एक्स

चरण 2:, ग्रहण करने के लिए

जाओ कॉन्फ़िगर सर्वर

GAE Server

GAE विकास सर्वर के तहत गुण खोलें -> करने के लिए बाध्य करने के लिए स्थानीय इंटरफ़ेस का पता, लैन आईपी पता दर्ज करें, और बचाओ।

चरण 3:

अब आप

http://192.168.x.x:8888/

8888 द्वारा GAE सर्वर तक पहुँच सकते हैं - के रूप में GAE विकास सर्वर

22

में उल्लेख किया है, पोर्ट संख्या को संदर्भित करता है यह बहुत आसान है गूगल द्वारा समर्थित रास्ता!

  • कंप्यूटर के लिए USB के माध्यम से अपने फोन से कनेक्ट करने और अपने कंप्यूटर खुला क्रोम ब्राउज़र पर USB डीबगिंग
  • सक्षम है और वास्तव में यह पता टाइप करें: chrome://inspect/#devices enter image description here
  • अब आप अपने कंप्यूटर बंदरगाह अपने डिवाइस बंदरगाह के द्वारा लिंक कर सकते हैं पोर्ट अग्रेषण बटन। मेरे कंप्यूटर पर मेरे पास localhost:61437 पते पर सेवा है और मैंने इसे अभी डिवाइस के 8081 पोर्ट से लिंक किया है। याद रखें अपने कंप्यूटर पर एक ही सेवा के साथ अपने मोबाइल ब्राउज़र से (localhost:61437) enter image description here

  • स्क्रीन की जाँच करने के चेकबॉक्स 'पोर्ट अग्रेषण सक्षम करें' सेवा से

enter image description here

  • स्क्रीन (localhost:8081)। और बस। इसके अलावा आप अपने आवेदन enter image description here

+0

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server – Mateusz

+0

यह वास्तव में अच्छा काम करता है। मेरे पास मेरी मेजबान फ़ाइल में एक प्रविष्टि है जो अन्य समाधानों को तोड़ने लगती है। यह काम किया। – jcollum

0

पोर्ट के साथ के बजाय IP पते को अपने स्वयं के सर्वर मेजबान का उपयोग कर स्थानीय वेब सेवाओं को एक्सेस करने के लिए, इन निम्न चरणों को भी आदेश में में इस सेवा पते का उपयोग:

  1. सुनिश्चित करें आपका एंड्रॉइड डिवाइस और आपकी स्थानीय मशीन एक ही नेटवर्क पर हैं।
  2. अपने मैक, Linux, या किसी अन्य प्रॉक्सी सर्वर पर SquidMan इंस्टॉल करें।
  3. प्रॉक्सी सर्वर के HTTPPort (उदा। 5555) और क्लाइंट (उदा। 192.168.0.0/24) को अपने नेटवर्क मास्क पर कॉन्फ़िगर करें, और प्रॉक्सी सर्वर चलाएं।
  4. आप या तो वेब सेवाओं का उपयोग कर रहे हैं:

    ए। एक वेब ब्राउज़र: वाईफाई नेटवर्क संशोधित करें से अपने एंड्रॉइड डिवाइस की प्रॉक्सी सेटिंग्स कॉन्फ़िगर करें।

    बी। एंड्रॉइड एप्लिकेशन: अपने HTTP क्लाइंट के लिए प्रॉक्सी सेट अप करें। यदि आप वॉली का उपयोग कर रहे हैं, तो इसे देखें: Volley Behind a Proxy server

  5. अब आप का उपयोग करके इसे से कनेक्ट जो कुछ यूआरएल आप अपने मेजबान पर प्रयोग कर रहे हैं वेब सेवा से कनेक्ट कर सकते हैं (उदा। http://my-local-machine.com)

सुझाव: आप 4xx प्रतिक्रिया कोड मिला है, अपने वेब के लिए सुनिश्चित करें सेवा अन्य गैर-स्थानीय-मेजबानों से कनेक्शन की अनुमति देती है।

0

मेरे मामले में, इन समाधानों में से कुछ भी काम नहीं करता है क्योंकि विंडोज फ़ायरवॉल इसे अवरुद्ध करता है, लेकिन फ़ायरवॉल पर नियम डालने से कोई प्रभाव नहीं पड़ता है।

मेरे मामले में समस्या यह है कि मेरा लैपटॉप वाईफ़ाई से जुड़ा हुआ है और विंडोज़ में सार्वजनिक नेटवर्क की तरह वाईफ़ाई कनेक्शन था। मुझे नेटवर्क नेटवर्क को निजी नेटवर्क में बदलना होगा। प्रश्न के लिए http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/

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