java.net.ConnectException: localhost / 127.0.0.1: 8080 - Kết nối bị từ chối


97

Tôi đang sử dụng máy chủ apache xampp để cung cấp tài nguyên cho ứng dụng từ máy của mình. Nhưng tôi đang gặp lỗi ở trên.

Tôi có một cái gì đó trên google. chỉ về giải pháp khả thi tại đây http://groups.google.com/group/android-beginners/browse_thread/thread/599a06416fb37b4a

Giải pháp cho vấn đề trên là gì?


1
Sử dụng vòng lặp 10.0.2.2 tới máy chủ cục bộ của bạn (127.0.0.1). Bạn có thể đọc thêm về nó tại đây Mạng giả lập Android
Dmytro Melnychuk

Câu trả lời:


292

Vì bạn chưa chỉ định bạn được kết nối với máy chủ từ thiết bị hoặc trình giả lập nên tôi đoán bạn đang sử dụng ứng dụng của mình trong trình giả lập.

Nếu bạn đang giới thiệu localhost trên hệ thống của mình từ trình giả lập Android thì bạn phải sử dụng http://10.0.2.2:8080/Vì trình giả lập Android chạy trong Máy ảo, do đó đây 127.0.0.1hoặc localhostsẽ là địa chỉ lặp lại của chính trình giả lập.

Tham khảo: Mạng giả lập


Vâng, chính xác là tôi đang làm điều tương tự. U có thể giải thích chi tiết. Nơi thay đổi địa chỉ ip thành 10.0.2.2. Đây là thư mục tôi đang cố gắng để truy cập từ máy chủ xampp localhost: 8080 / aero
Pradeep

1
Tôi hiểu rồi, chúng ta phải điều chỉnh đường dẫn được cung cấp trong ứng dụng như http: // localhost: 8080 / link / to / resource.xml thành http://10.0.2.2:8080/link/to/resource.xml
pradeep

@VikasPatidar u có thể vui lòng cho tôi biết nơi để thay đổi địa chỉ này để 10.0.2.2 trong mã của tôi như là một newbie
AndroidOptimist

1
ví dụ như nếu URL của bạn cũng giống như http://localhost:8080/Getdata.phphoặc http://127.0.0.1:8080/Getdata.phpsau đó bạn phải thay đổi nó như sử dụnghttp://10.0.2.2:8080/Getdata.php
Vikas Patidar

1
Thay thế 10.0.2.2bằng 10.0.3.2nếu bạn đang chạy trên Genymotion.
Jacob R

25

trong android

Thay thế: String webServiceUrl = "http://localhost:8080/Service1.asmx"

Với : String webServiceUrl = "http://10.0.2.2:8080/Service1.asmx"

Chúc may mắn!


1
ở đâu trong tệp nào?
user3475052

19

localhost và 127.0.0.1 đều là cách nói 'máy hiện tại'. Vì vậy, localhost trên PC của bạn là PC và localhost trên Android là điện thoại. Vì điện thoại của bạn không chạy máy chủ web, tất nhiên nó sẽ từ chối kết nối.

Bạn cần lấy địa chỉ IP của máy mình (sử dụng ipconfig trên windows để tìm hiểu) và sử dụng địa chỉ đó thay vì 127.0.0.1. Điều này có thể vẫn không hoạt động tùy thuộc vào cách mạng / tường lửa của bạn được thiết lập. Nhưng đó là một chủ đề hoàn toàn khác.


u có thể giải thích rằng nhiều chi tiết, làm cần phải chane máy của tôi địa chỉ IP
Pradeep

2
Nếu bạn gõ ipconfig, nó sẽ cho bạn biết địa chỉ IP của máy bạn. Đây rất có thể là một địa chỉ IP riêng cho mạng của bạn vì vậy nó sẽ chỉ có thể truy cập được từ các thiết bị trong cùng một mạng để WIFI có thể hoạt động, 3G thì không.
skorulis,

@skorulis vâng, chúng tôi cần đặt url của máy khác với 127.0.0.1 vì chúng tôi được kết nối với các mạng trong mã ứng dụng của chúng tôi.
Ravi Yadav

Bạn cũng có thể đặt một IP cụ thể cho máy tính của mình mà máy chủ đang chạy. Sử dụng IP này trong Ứng dụng Android của bạn. Điều đó tốt hơn vì trong trường hợp bạn khởi động lại bộ định tuyến hoặc máy tính của mình, bạn sẽ thường nhận được một IP mới cho máy tính và bạn có thể thay đổi nó trong mã của mình.
DOUBL3P


9

Bạn chỉ cần sử dụng địa chỉ IP cục bộ (nhưng thực) và số cổng như sau:

String webServiceUrl = "http://192.168.X.X:your_virtual_server_port/your_service.php"

Và đảm bảo rằng bạn đã đặt quyền truy cập Internet trong tệp kê khai

<uses-permission android:name="android.permission.INTERNET" />


5

Nếu bạn đang sử dụng localhost trong url của mình và thử nghiệm ứng dụng của bạn trong trình giả lập, bạn chỉ cần thay thế địa chỉ ip của hệ thống cho localhost trong URL. Hoặc bạn có thể sử dụng 10.0.2.2 thay vì localhost.

http: //localhost/webservice.php đến http://10.218.28.19/webservice.php

Trong đó 10.218.28.19 -> Địa chỉ IP của hệ thống.

hoặc là

http: //localhost/webservice.php đến http://10.0.2.2/webservice.php


4

Bạn chỉ cần sử dụng địa chỉ IP cục bộ của mình: sử dụng lệnh cmd "ipconfig" và số cổng máy chủ của bạn như sau:

String webServiceUrl = " http: //192.168.XX: your_local_server_port / your_web_service_name.php "

Và đảm bảo rằng bạn đã đặt quyền truy cập Internet trong tệp kê khai dự án của mình

Nó hoạt động hoàn hảo cho tôi

Chúc may mắn


3

nó làm việc cho tôi. Tôi sử dụng genymotion cho ứng dụng Run.

1. Đầu tiên tôi đã được kiểm tra ip cục bộ của mình. chế độ lệnh goto >> Và ghi ipconfig. Ví dụ: Windows 10 >> tìm kiếm cmd >> sau đó Viết ipconfig. 2. Sau đó lấy thông tin ip cục bộ của bạn >>> 3. Sử dụng ip localhost và ip hộp ảo của bạn. Bạn cần sử dụng ip hộp ảo cho genymotion. Kiểm tra ảnh chụp màn hình bên dưới. Bạn có thể bạn dưới bất kỳ ip nào trong mạng máy chủ hộp ảo ảo nhập mô tả hình ảnh ở đây


2

Thay thế localhost bằng 10.0.2.2 là đúng, nhưng bạn có thể thay thế localhost bằng ip của máy vật lý của mình (tốt hơn cho mục đích gỡ lỗi). Tất nhiên, nếu ip được cung cấp bởi dhcp, bạn sẽ phải thay đổi nó mỗi lần ...

Chúc may mắn!


0

Giải pháp rất đơn giản.

1 Thêm quyền Internet trong tệp Androidmanifest.xml

<uses-permission android:name="android.permission.INTERNET" />

[2] Thay đổi tệp httpd.config của bạn

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

TO

Order Deny,Allow
Allow from all
Allow from 127.0.0.1

And restart your server.

[3] Và nhất là bước bất lực. ĐẶT MẠNG CỦA BẠN LÀM MẠNG CHỦ CỦA BẠN

Đi tới Bảng điều khiển> Mạng và Internet> Trung tâm Mạng và Chia sẻ

Click on your Network and select HOME NETWORK

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.