วิธีเชื่อมต่อกับเว็บเซิร์ฟเวอร์ http: // localhost ของฉันจาก Android Emulator ใน Eclipse


485

สิ่งที่ฉันสามารถทำได้ใน Android จำลอง Eclipse เพื่อเชื่อมต่อไปยังเว็บเซิร์ฟเวอร์หน้า localhost ของฉันที่http://localhostหรือhttp://127.0.0.1?

ฉันลองแล้ว แต่อีมูเลเตอร์ยังคงรับคำขอของฉันอย่าง Google ค้นหา localhost หรือแย่กว่านั้นก็บอกว่าไม่พบหน้าเว็บในขณะที่เว็บเซิร์ฟเวอร์ของฉันทำงานปกติ


คำถามนี้เป็นคำถามเกี่ยวกับ Android Emulatorและมีโซลูชั่นที่ใช้บังคับกับกรณีที่ว่าอยู่คนเดียว หากคุณประสบปัญหานี้เมื่อใช้อุปกรณ์ Android กายภาพโปรดดูแทนstackoverflow.com/questions/4779963/...
คริสแตรทตัน

คำตอบ:


819

localhost หมายถึงอุปกรณ์ที่ใช้รหัสในกรณีนี้โปรแกรมจำลอง

หากคุณต้องการอ้างถึงคอมพิวเตอร์ที่ใช้ตัวจำลอง Android ให้ใช้ที่อยู่ IP 10.0.2.2แทน

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถอ่านเพิ่มเติมได้จากที่นี่


12
ทำไมถึงหมายถึงคำถามอื่น ๆ เพียงเพิ่มระบบเครือข่ายการจำลอง
Marvin Emil Brach

ขอบคุณที่ชี้นำการเชื่อมโยง ฉันเดาว่ามันไม่ได้อยู่ที่นั่นเมื่อคำตอบถูกโพสต์
Pappachan Primal

1
@primpap: ฉันสามารถใช้ชื่อเครื่องแทนที่อยู่ IP ได้หรือไม่?
KJEjava48

@primpap สิ่งนี้ไม่ทำงานกับการแก้ไขข้อบกพร่องมือถือ มีบ้างไหม? หรือฉันทำผิดพลาดที่ไหนสักแห่งเพราะ 10.0.2.2 ทำงานบนอีมูเลเตอร์ แต่ไม่ทำงานเมื่อฉันเชื่อมต่อมือถือสำหรับการดีบัก usb ?
Jawad Zeb

5
โซลูชันนี้ใช้งานได้กับอีมูเลเตอร์ตามที่ถามในคำถามเฉพาะที่นี่ การดีบักเหล่านั้นบนอุปกรณ์ Android จริงจะต้องใช้ที่อยู่ IP หรือชื่อจริงของเซิร์ฟเวอร์พวกเขาไม่สามารถใช้นามแฝงเฉพาะโปรแกรมจำลองนี้ได้เท่านั้น คำตอบนี้เป็นสิ่งที่ดี - แต่ผู้อ่านจะต้องระมัดระวังว่าสถานการณ์ของพวกเขาเป็นหนึ่งในสิ่งที่มันเป็นบังคับ
Chris Stratton

156

ใช้10.0.2.2สำหรับ AVD เริ่มต้นและ10.0.3.2สำหรับ.


ดังนั้นเราเพียงแค่เพิ่ม10.0.3.2ไฟล์โฮสต์ของเราหรือไม่
ayjay

29

ฉันใช้ 10.0.2.2 บนเครื่องที่บ้านของฉันสำเร็จแล้ว แต่ที่ทำงานมันไม่ทำงาน หลังจากชั่วโมงแห่งการหลอกลวงฉันสร้างอินสแตนซ์อีมูเลเตอร์ใหม่โดยใช้Android Virtual Device (AVD) manager และในที่สุดก็ทำงาน 10.0.2.2

ฉันไม่รู้ว่าเกิดอะไรขึ้นกับอินสแตนซ์อีมูเลเตอร์อื่น (แพลตฟอร์มเหมือนกัน) แต่ถ้าคุณพบว่า 10.0.2.2 ใช้งานไม่ได้ลองสร้างอินสแตนซ์อีมูเลเตอร์ใหม่


4
น่าเสียดายที่มันไม่ทำงานสำหรับฉันแม้หลังจากสร้างอินสแตนซ์ AVD ใหม่ คุณแนะนำอะไร? หากต้องการติดตั้งใหม่ทุกอย่าง
Vlado Pandžić

23

ลองหมายเลขพอร์ตของคุณอยู่http://10.0.2.2:8080/ที่ไหน 8080มันทำงานได้อย่างสมบูรณ์ ถ้าคุณลอง10.0.2.2มันจะไม่ทำงาน คุณต้องเพิ่มหมายเลขพอร์ตลงไป นอกจากนี้หากติดตั้ง Microsoft IIS แล้วให้ลองปิดคุณสมบัตินั้นจากแผงควบคุม (หากใช้ windows os ใด ๆ ) จากนั้นลองใช้ตามที่ระบุข้างต้น


2
เกิดอะไรขึ้นถ้าหน้าโฮสต์บน IIS?
maracuja-juice

@Marimba เพิ่งคิดออกว่าพอร์ตใดที่เซิร์ฟเวอร์ IIS ของคุณให้บริการอยู่จากนั้นเข้าถึง10.0.2.2:your_iis_port ของคุณ
StoneLam

นี่เป็นสตริงที่สมบูรณ์และตัวเดียวที่ทำงานบน android 8.1 emulator ของฉัน
CodeToLife

10

ตามเอกสาร:

10.0.2.2 - นามแฝงพิเศษสำหรับอินเทอร์เฟซลูปแบ็คโฮสต์ของคุณ (เช่น 127.0.0.1 บนเครื่องพัฒนาของคุณ)

ตรวจสอบระบบเครือข่ายจำลองสำหรับเทคนิคเพิ่มเติมเกี่ยวกับเครือข่ายจำลอง



3

ฉันต้องหาที่อยู่ IP ของโฮสต์ระบบสำหรับโปรแกรมจำลอง "Nox App Player" 172.17.100.2นี่คือวิธีที่ฉันคิดว่ามันเป็น

  1. ติดตั้ง Android Terminal Emulator จาก app store
  2. ออกip link showคำสั่งเพื่อแสดงอินเตอร์เฟสเครือข่ายทั้งหมด สิ่งที่น่าสนใจเป็นพิเศษคือส่วนต่อประสาน eth1
  3. ออกifconfig eth1คำสั่งแสดง net เป็น172.17.100.15/255.255.255.0
  4. เริ่มต้นส่ง Ping ไปยังที่อยู่ที่เริ่ม172.17.100.1ได้รับการกดที่ 172.17.100.2 ' ไม่แน่ใจว่าไฟร์วอลล์จะรบกวนหรือไม่ แต่ในกรณีของฉัน

บางทีนี่อาจช่วยคนอื่นคิดหาอีมูเลเตอร์คนอื่น


1

หากคุณอยู่ใน windows คุณสามารถไปที่ระบบ simbol และเขียนipconfigและตรวจสอบว่า ip ใดที่กำหนดให้กับเครื่องของคุณ


สิ่งนี้ไม่จำเป็นเมื่อทำการดีบั๊กจากอีมูเลเตอร์เนื่องจากคุณสามารถใช้นามแฝงพิเศษสำหรับอินเตอร์เฟสลูปแบ็คโฮสต์ที่อ้างถึงในคำตอบอื่น ๆ อย่างไรก็ตามถ้าการดีบั๊กจากอุปกรณ์ Android จริงคุณต้องระบุที่อยู่ที่แท้จริงของเซิร์ฟเวอร์ทดสอบและใช้มัน
Chris Stratton

1

คุณสามารถใช้localhost:8000เพื่อเชื่อมต่อกับ localhost ของเครื่องโดยใช้คำสั่งด้านล่างทุกครั้งเมื่อคุณเรียกใช้โปรแกรมจำลอง (ทดสอบบน Mac เท่านั้น):

adb reverse tcp:8000 tcp:8000

เพียงนำไปไว้ที่เทอร์มินัล Android Studio

โดยทั่วไปจะตั้งค่าพร็อกซีย้อนกลับซึ่งเซิร์ฟเวอร์ http ที่ทำงานบนโทรศัพท์ของคุณยอมรับการเชื่อมต่อบนพอร์ตและเชื่อมต่อเข้ากับคอมพิวเตอร์ของคุณหรือในทางกลับกัน


0

ฉันไม่ทราบว่าอาจหัวข้อนี้ได้รับการแก้ไขแล้ว แต่เมื่อฉันได้ลองทำสิ่งนี้บนเครื่อง Windows ฉันได้เผชิญกับปัญหามากมาย ดังนั้นทางออกของฉันง่ายจริงๆ ฉันได้ดาวน์โหลดซอฟต์แวร์http://www.lenzg.net/rinetd/rinetd.html ที่อ่อนนุ่มนี้ได้ ทำตามคำแนะนำของพวกเขาเกี่ยวกับวิธีการส่งต่อพอร์ตและจากนั้นอุปกรณ์ Android ของฉันก็เชื่อมต่อเพื่อให้โครงการ asp.net localhost สำเร็จและหยุดที่จุดแตกหัก

ไฟล์ rinetd.conf ของฉัน:

10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82

ที่ 10.1.1.20 เป็น localhost ip ของฉัน, 82 และ 1234 พอร์ตของฉันนอกจากนี้ฉันยังมีไฟล์อาบน้ำที่คุณอยากเก็บไว้ในชื่อ yourofbathfile.bat ชีวิตง่าย ๆ ใส่ไฟล์นั้นไว้ในโฟลเดอร์ ไฟล์อาบน้ำของฉัน:

rinetd.exe -c rinetd.conf

หลังจากเริ่มซอฟต์แวร์นี้ให้เริ่มต้นเซิร์ฟเวอร์ aps.net ของคุณแล้วลองเข้าถึงจากอุปกรณ์ Android หรืออุปกรณ์ใด ๆ ในเครือข่ายท้องถิ่นของคุณ (เช่น Computer ABC เริ่ม putty) และคุณจะเห็นว่าทุกอย่างทำงานได้ ไม่จำเป็นต้องไปที่การตั้งค่าเราเตอร์หรือทำสิ่งที่ซับซ้อนอื่น ๆ ฉันหวังว่านี่จะช่วยคุณได้ สนุก.


-1

วิธีแก้ปัญหาอื่นคือการได้รับโดเมนฟรีจาก no-ip.org และชี้ไปยังที่อยู่ IP ท้องถิ่นของคุณ จากนั้นแทนที่จะใช้http://localhost/yourwebserviceคุณสามารถลองhttp://yourdomain.no-ip.org/yourwebservice

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.