这是在 Nexus4 (v4.3) 模拟器中,我使用 Android Studio 进行开发,并且添加了 android.permission.INTERNET &android.permission.ACCESS_NETWORK_STATE 清单文件中的权限.错误说它等待了 15 秒,但它没有,它立即出错.07-13 15:57:53.947 820-840/it.test.android.app.activity D/Retrofit:--->HTTP POST http://localhost:3000/app/auth/signin07-13 15:57:54.132 820-840/it.test.android.app.activity D/Retrofit:内容类型:应用程序/json;字符集=UTF-807-13 15:57:54.132 820-840/it.test.android.app.activity D/Retrofit:内容长度:4407-13 15:57:54.157 820-840/it.test.android.app.activity D/Retrofit: {"auth":{"email":"steve","password":"pass"}}07-13 15:57:54.387 820-840/it.test.android.app.activity D/改造:--->结束 HTTP(44 字节正文)07-13 15:57:54.657 820-840/it.test.android.app.activity D/Retrofit: ---- 错误 http://localhost:3000/app/auth/signin07-13 15:57:54.857 820-840/it.test.android.app.activity D/Retrofit:java.net.ConnectException:15000 毫秒后无法连接到 localhost/127.0.0.1(端口 3000):isConnected 失败:ECONNREFUSED(连接被拒绝)在 libcore.io.IoBridge.isConnected(IoBridge.java:223)在 libcore.io.IoBridge.connectErrno(IoBridge.java:161)在 libcore.io.IoBridge.connect(IoBridge.java:112)在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)在 java.net.Socket.connect(Socket.java:842)在 libcore.net.http.HttpConnection.(HttpConnection.java:76)在 libcore.net.http.HttpConnection.(HttpConnection.java:50)在 libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)在 libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)在 libcore.net.http.HttpConnection.connect(HttpConnection.java:128)在 libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)在 libcore.net.http.HttpEngine.connect(HttpEngine.java:311)在 libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)在 libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)在 libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)在 libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)在改造.client.UrlConnectionClient.prepareRequest(UrlConnectionClient.java:68)在改造.client.UrlConnectionClient.execute(UrlConnectionClient.java:37)在改造.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321)在改造.RestAdapter$RestHandler.access$100(RestAdapter.java:220)在改造.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)在改造.CallbackRunnable.run(CallbackRunnable.java:42)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)在改造.Platform$Android$2$1.run(Platform.java:142)在 java.lang.Thread.run(Thread.java:841)引起:libcore.io.ErrnoException: isConnected failed: ECONNREFUSED(连接被拒绝)在 libcore.io.IoBridge.isConnected(IoBridge.java:208)在 libcore.io.IoBridge.connectErrno(IoBridge.java:161)在 libcore.io.IoBridge.connect(IoBridge.java:112)在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)在 java.net.Socket.connect(Socket.java:842)在 libcore.net.http.HttpConnection.(HttpConnection.java:76)在 libcore.net.http.HttpConnection.(HttpConnection.java:50)在 libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)在 libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)在 libcore.net.http.HttpConnection.connect(HttpConnection.java:128)在 libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)在 libcore.net.http.HttpEngine.connect(HttpEngine.java:311)在 libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)在 libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)在 libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)在 libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)在改造.client.UrlConnectionClient.prepareRequest(UrlConnectionClient.java:68)在改造.client.UrlConnectionClient.execute(UrlConnectionClient.java:37)在改造.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321)在改造.RestAdapter$RestHandler.access$100(RestAdapter.java:220)在改造.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)在改造.CallbackRunnable.run(CallbackRunnable.java:42)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)在改造.Platform$Android$2$1.run(Platform.java:142)在 java.lang.Thread.run(Thread.java:841)07-13 15:57:54.857 820-840/it.test.android.app.activity D/Retrofit: ---- END ERROR 解决方案 我解决了这个问题,需要使用 10.0.2.2 而不是 localhost 连接到我的本地服务器.在这里找到 - http://developer.android.com/tools/devices/emulator.html#networkaddressesMy app that is using Retrofit (v1.6.1) to connect to REST web services cannot connect to my local web server (running on localhost), this is the error I am getting.This is inside Nexus4 (v4.3) emulator, I am using Android Studio for development and I have added android.permission.INTERNET & android.permission.ACCESS_NETWORK_STATE permissions in manifest file.The error says its waited for 15s but it does not, it errors out right away.07-13 15:57:53.947 820-840/it.test.android.app.activity D/Retrofit﹕ ---> HTTP POST http://localhost:3000/app/auth/signin07-13 15:57:54.132 820-840/it.test.android.app.activity D/Retrofit﹕ Content-Type: application/json; charset=UTF-807-13 15:57:54.132 820-840/it.test.android.app.activity D/Retrofit﹕ Content-Length: 4407-13 15:57:54.157 820-840/it.test.android.app.activity D/Retrofit﹕ {"auth":{"email":"steve","password":"pass"}}07-13 15:57:54.387 820-840/it.test.android.app.activity D/Retrofit﹕ ---> END HTTP (44-byte body)07-13 15:57:54.657 820-840/it.test.android.app.activity D/Retrofit﹕ ---- ERROR http://localhost:3000/app/auth/signin07-13 15:57:54.857 820-840/it.test.android.app.activity D/Retrofit﹕ java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 3000) after 15000ms: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:223) at libcore.io.IoBridge.connectErrno(IoBridge.java:161) at libcore.io.IoBridge.connect(IoBridge.java:112) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) at java.net.Socket.connect(Socket.java:842) at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76) at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) at libcore.net.http.HttpEngine.connect(HttpEngine.java:311) at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81) at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) at retrofit.client.UrlConnectionClient.prepareRequest(UrlConnectionClient.java:68) at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:37) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321) at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at retrofit.Platform$Android$2$1.run(Platform.java:142) at java.lang.Thread.run(Thread.java:841) Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused) at libcore.io.IoBridge.isConnected(IoBridge.java:208)            at libcore.io.IoBridge.connectErrno(IoBridge.java:161)            at libcore.io.IoBridge.connect(IoBridge.java:112)            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)            at java.net.Socket.connect(Socket.java:842)            at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)            at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)            at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)            at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)            at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)            at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)            at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)            at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)            at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)            at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)            at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)            at retrofit.client.UrlConnectionClient.prepareRequest(UrlConnectionClient.java:68)            at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:37)            at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321)            at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)            at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)            at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)            at retrofit.Platform$Android$2$1.run(Platform.java:142)            at java.lang.Thread.run(Thread.java:841)07-13 15:57:54.857 820-840/it.test.android.app.activity D/Retrofit﹕ ---- END ERROR 解决方案 I solved the issue, need to use 10.0.2.2 instead of localhost to connect to my local server.Found it here - http://developer.android.com/tools/devices/emulator.html#networkaddresses 这篇关于Retrofit 无法通过端口 3000 连接到我的本地 Web 服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
07-31 05:28