java - 尝试连接 JSON 服务器时出现异常

标签 java android json retrofit crud

我目前正在开发一个用于作业的 CRUD Android 应用程序,我遇到了一个奇怪的问题,而老师提供的示例中没有出现这个问题。

我们正在使用 Docker JSON 服务器,并且正在向该服务器添加数据,但当我单击按钮转到 Activity 时出现错误。

接下来我将粘贴 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();

我真的不知道问题出在哪里,但在老师给出的例子中我没有遇到这个问题,它几乎是复制和粘贴。

最佳答案

案例1

如果您使用模拟器:

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

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

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

显然,这种方法的使用不仅仅限于调试。如果您在火车上并且没有互联网连接,您仍然可以使用此方法来开发您的应用程序。

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

<小时/>

案例2

您正在使用设备:

当您想避免使用模拟器时,需要采用不同的方法。但是,此解决方案要求您位于同一 Wi-Fi 网络上:

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

再一次,所有请求都应该针对您计算机上运行的本地主机服务器。

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

祝你编码愉快!

关于java - 尝试连接 JSON 服务器时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921161/

相关文章:

java - 使用自定义对象数组列表实例化 fragment

web-services - 使用 JSON 框架将数值发送到 Web 服务

json - Http GET 方法到 Https?

java - 在 While 循环中创建包含字符的字符串 Java

java - Android 上的 HTTPS 身份验证

javax.sound.sampled.LineUnavailableException :

java - 在 onCreate 中初始化变量,但在 onResume() 中更新它们

android - 仅在未实现 onError 时使用 RxJava 的全局错误处理解决方案

java - Android Ksoap从webservice获取类的列表数组

java - JSON 到 XML 的转换而不改变序列