Я пытаюсь вызвать локальный REST API с моего устройства Android.Вызов работает нормально с эмулятора, но я получаю ошибку при сбое подключения при попытке с моего устройства.
Сервер, с которого я пытаюсь сделать вызов, является приложением Java SpringBoot.Я попытался получить доступ к URL-адресу с помощью IP-адреса компьютера (из ipconfig), а также с общедоступного IP-адреса.Только эмулятор компьютера IP работает.И ПК, и устройство Android находятся в одной сети, поэтому проблем не должно быть.
Код со стороны клиента Android:
public interface UserService{
String BASE_URL = "http://ip:8080/";
@GET("users/{id}")
Call<User> getUser(@Path("id") int userId);
@POST("login")
Call<LoginResponseDto> login(@Body LoginDto loginDto);
@POST("users")
Call<User> register(@Body RegisterDto registerDto);
}
Где ip - ip моего ПК.
public LoginResponseDto login(LoginDto loginDto) throws IOException {
final LoginResponseDto[] user = {new LoginResponseDto()};
Call<LoginResponseDto> loginCall = userService.login(loginDto);
Response<LoginResponseDto> response = loginCall.execute();
if (response.code() == 401) {
try {
JSONObject jObjError = new JSONObject(response.errorBody().string());
System.out.println("MESSAGE = " + jObjError.getString("message"));
throw new RuntimeException(jObjError.getString("message"));
} catch (JSONException e) {
e.printStackTrace();
}
}
user[0] = response.body();
return user[0];
}
Я ожидаю успешного входа в систему на сервер с возвращенным LoginResponseDto и началом активности домашней страницы. Вместо этого при вызове loginCall.execute () я получаю:
java.net.SocketTimeoutException: failed to connect to /my_pc_ip (port 8080) from /some_ip (port 45074) after 10000ms.
Я не знаю, кто это какой-то.