Не удается вызвать локальный REST Api с устройства Android - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь вызвать локальный 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.

Я не знаю, кто это какой-то.

1 Ответ

0 голосов
/ 15 апреля 2019

Итак, я решил эту проблему, сделав порт, на котором tomcat, развертывает приложение.Это можно сделать, введя брандмауэр Windows и добавив новое правило для входящих портов для этого порта (обычно 8080 или 8081).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...