AVD android设备无法连接到localhost:3000

时间:2018-11-05 11:07:56

标签: java android retrofit

我正在尝试使用Android上的Retrofit连接到localhost:3000/full

public class RestManager {

private QaraSozService qaraSozService;

public QaraSozService getQaraSozService() {


    if (qaraSozService == null) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://localhost:3000")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        qaraSozService = retrofit.create(QaraSozService.class);
    }

    return qaraSozService;
}
}
public interface QaraSozService {

@GET("/full")
Call<List<QaraSoz>> getAllQaraSoz();
}

但是当我尝试连接时出现onFailure,我得到了错误消息,我得到了Failed to connect to localhost/127.0.0.1:3000 enter image description here

为什么android尝试连接到localhost/127.0.0.1:3000而不是localhost:3000?

2 个答案:

答案 0 :(得分:0)

您的API服务器在台式机/笔记本电脑上运行,如果您尝试从移动设备连接到此api,则应在baseUrl而不是localhost中设置台式机/笔记本电脑的ip(类似:baseUrl("http://192.168.0.1:3000"))< / p>

请确保您的服务器和移动设备在同一局域网中。

或者,如果您使用android模拟器而不是真实设备,则应使用ip 10.0.2.2。此处更多信息:https://developer.android.com/studio/run/emulator-networking

  

10.0.2.2主机回送接口的特殊别名(即开发计算机上的127.0.0.1)

答案 1 :(得分:0)

我看到它是Ubuntu,请执行以下步骤: -从终端类型>> ifconfig 这将打印出您的机器wlan IP地址 您将使用此ip而不是127.0.0.1来访问您的IP -您可以通过输入wlanip:3000进行测试,它应该等效于localhost:3000。 -如果您遇到问题,则可能需要从终端>> sudo ufw disable禁用Ubuntu防火墙 -确保将Android设备和Ubuntu计算机连接到同一网络,然后将Android代码中的127.0.0.1替换为从ifconfig命令获得的代码,然后测试您的应用程序