尝试连接 JSON 服务器时出现异常
Exception while trying to connect JSON Server
我目前正在开发一个 CRUD android 应用程序作为家庭作业,我遇到了一个奇怪的问题,在老师提供的示例中没有发生。
我们正在使用 Docker JSON 服务器,我们正在向该服务器添加数据,但是当我单击按钮转到 activity 时出现错误。
接下来我会粘贴logcat:
并且是由于:
接下来我要复制导致错误的 java class "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();
我真的不知道是哪个问题,但是我在老师给的例子上没有那个问题,几乎是复制粘贴。
案例一
如果您使用的是模拟器:
首先是坏消息:此解决方案仅适用于模拟器,不适用于您的实际设备。
- 启动您的模拟器(因为它可能需要一段时间才能准备就绪)
- 在本地主机上启动您的服务器并附加调试器
- 将 Android 代码中的 API 端点更改为 http://10.0.2.2(这会将请求从您的模拟器重新路由到您计算机的本地主机)
- 运行 模拟器上的 Android 应用程序并导致您要调试的请求
这应该使您能够捕获本地主机服务器上的传入请求。就我而言,这很快解决了我的问题。
显然,这种方法的使用并不局限于调试。如果您在火车上并且没有互联网连接,您仍然可以使用这种方法来开发您的应用程序。
最后一个提示:如果您使用 GenyMotion 作为模拟器,请使用 http://10.0.3.2 作为本地主机重新路由地址。
案例二
您正在使用的设备:
如果您想避免使用模拟器,则需要采用不同的方法。但是,此解决方案要求您处于同一 Wi-Fi 网络中:
- 将 API 请求端点更改为您计算机的本地 IP 地址,例如http://192.168.0.142
- 运行 您设备上的应用程序
再一次,所有请求都应该针对您计算机上的本地主机服务器 运行。
如果您有任何疑问或问题,请告诉我们:@futurestud_io
编码愉快!
在清单上添加:
android:usesCleartextTraffic="true"
我目前正在开发一个 CRUD android 应用程序作为家庭作业,我遇到了一个奇怪的问题,在老师提供的示例中没有发生。
我们正在使用 Docker JSON 服务器,我们正在向该服务器添加数据,但是当我单击按钮转到 activity 时出现错误。
接下来我会粘贴logcat:
并且是由于:
接下来我要复制导致错误的 java class "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();
我真的不知道是哪个问题,但是我在老师给的例子上没有那个问题,几乎是复制粘贴。
案例一
如果您使用的是模拟器:
首先是坏消息:此解决方案仅适用于模拟器,不适用于您的实际设备。
- 启动您的模拟器(因为它可能需要一段时间才能准备就绪)
- 在本地主机上启动您的服务器并附加调试器
- 将 Android 代码中的 API 端点更改为 http://10.0.2.2(这会将请求从您的模拟器重新路由到您计算机的本地主机)
- 运行 模拟器上的 Android 应用程序并导致您要调试的请求
这应该使您能够捕获本地主机服务器上的传入请求。就我而言,这很快解决了我的问题。
显然,这种方法的使用并不局限于调试。如果您在火车上并且没有互联网连接,您仍然可以使用这种方法来开发您的应用程序。
最后一个提示:如果您使用 GenyMotion 作为模拟器,请使用 http://10.0.3.2 作为本地主机重新路由地址。
案例二
您正在使用的设备:
如果您想避免使用模拟器,则需要采用不同的方法。但是,此解决方案要求您处于同一 Wi-Fi 网络中:
- 将 API 请求端点更改为您计算机的本地 IP 地址,例如http://192.168.0.142
- 运行 您设备上的应用程序
再一次,所有请求都应该针对您计算机上的本地主机服务器 运行。
如果您有任何疑问或问题,请告诉我们:@futurestud_io
编码愉快!
在清单上添加:
android:usesCleartextTraffic="true"