我有一个Android应用程序,该应用程序使用retrofit2进行API调用,但是当我尝试调用服务器时,会抛出此错误java.net.ConnectException: Failed to connect to /192.168.1.5:3000
。
当我为改造设置API客户端时,我显然为该应用设置了不同的基本URL,但是它始终显示此错误。
ApiClient.java
public class ApiClient {
private static Retrofit retrofit;
public static Retrofit getRetrofitInstance() {
if (retrofit == null) {
final OkHttpClient client = setTokenToHeader();
retrofit = new retrofit2.Retrofit.Builder()
.client(client)
.baseUrl("http://192.168.1.3:3000/")
//.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
private static OkHttpClient setTokenToHeader() {
return new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request newRequest = chain.request()
.newBuilder()
.addHeader("Authorization", "Bearer " + UserInfo.getToken())
.build();
return chain.proceed(newRequest);
}
}).build();
}
}
这是我正在进行服务器调用的函数,但是我尝试调试它,并且当我看到retrofit.baseUrl()
的值时,它给出了"http://192.168.1.5:3000"
并且我没有此IP地址整个项目。
private void login() {
final Retrofit retrofit = ApiClient.getRetrofitInstance();
Log.e("URL: ", retrofit.baseUrl());
final userApiInterface apiInterface = retrofit.create(userApiInterface.class);
// Body
final User loginUser = new User();
loginUser.setUserEmail(Email.getText().toString());
loginUser.setPassword(Password.getText().toString());
final Call<User> call = apiInterface.Login(loginUser);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(@NonNull Call<User> call, @NonNull Response<User> response) {
handleLoginResponse(response);
}
@Override
public void onFailure(@NonNull Call<User> call, @NonNull Throwable t) {
customToast.internalError();
Log.e("Retrofit error: ", String.valueOf(t));
}
});
}
答案 0 :(得分:0)
在进行API调用并在真实设备上运行客户端应用程序时,应确保firewall
已完全关闭。
您可以在此处找到有关如何禁用防火墙https://silicophilic.com/disable-firewall-windows-10/
的一些步骤