尝试连接JSON服务器时发生异常

时间:2020-01-26 17:58:53

标签: java android json retrofit crud

我目前正在使用CRUD android应用进行家庭作业,但遇到了一个奇怪的问题,该问题在老师提供的示例中没有发生。

我们正在使用Docker JSON Server,我们正在向该服务器添加数据,但是当我单击该按钮进入活动时,出现错误。

接下来我将粘贴logcat:

enter image description here

并且由以下原因引起: enter image description here

接下来,我要复制导致错误的Java类“ Cliente”:

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class Cliente {
    private static final String URL = "http://localhost:3000/";
    private static Retrofit retrofit = null;

    public static Retrofit obtenerCliente(){
        if(retrofit == null){
            retrofit = new Retrofit.Builder()
                    .baseUrl(URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }

        return retrofit;
    }
}

然后,在ActivityPokemones上的第80行:

retrofit = Cliente.obtenerCliente();

我真的不知道是什么问题,但是在老师给的例子中我没有那个问题,它几乎是复制粘贴。

2 个答案:

答案 0 :(得分:0)

案例1

如果您正在使用仿真器:

首先是坏消息:此解决方案仅适用于仿真器,不适用于您的实际设备。

  1. 启动模拟器(因为它可能需要一段时间才能准备就绪)
  2. 在本地主机上启动服务器并附加调试器
  3. 将Android代码中的API端点更改为http://10.0.2.2这会将请求从模拟器重新路由到计算机的本地主机
  4. 在模拟器上运行Android应用,并导致要调试的请求

这应该使您能够在localhost服务器上捕获传入的请求。就我而言,这很快解决了我的问题。

显然,此方法的使用不限于调试。如果您在火车上并且没有Internet连接,则可以使用此方法来开发应用。

最后一个提示:如果您使用GenyMotion作为仿真器,请使用http://10.0.3.2作为本地主机重新路由地址。


案例2

您正在使用设备

当您要避免使用仿真器时,有必要采用其他方法。但是,此解决方案要求您使用同一Wi-Fi网络:

  1. 将API请求端点更改为您计算机的本地IP地址,例如http://192.168.0.142
  2. 在设备上运行应用

再次,所有请求都应针对计算机上运行的localhost服务器。

如果您有任何疑问或问题,请告诉我们:@futurestud_io

快乐编码!

答案 1 :(得分:0)

在清单上添加它:

WMan