Дооснащение 2 - ConnectException - только при подключении напрямую к устройству "Alcatel LINKZONE MW40CJ 4G MiFi"

Я разрабатываю приложение для Android для устройства Vuzix M300 Smart Glass. Vuzix M300 имеет настроенную ОС Android Marshmallow (уровень API 23). Чтобы взаимодействовать с API-интерфейсами SAP, я использую Retrofit 2 вместе с SimpleXmlConverter для анализа XML. Сервер использует базовую аутентификацию (OAuth) для авторизации. Ниже приведен код установки модернизации

OkHttpClient client = new OkHttpClient.Builder()
            .addInterceptor(new BasicAuthInterceptor(userName, password))
            .addInterceptor(new ReceivedCookiesInterceptor())   //  Stores session cookies in the SharedPreferences
            .addInterceptor(new AddCookiesInterceptor())    //  Retrieve session cookies from SharedPreferences and send in the APIs
            .build();

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .client(client)
            .addConverterFactory(
                    SimpleXmlConverterFactory.createNonStrict(
                            new Persister(new AnnotationStrategy())))
            .build();

ApiEndpoints apiEndpoints = retrofit.create(ApiEndpoints.class); // Interface to declare API endpoints.
Call<ResponseBody> call = apiEndpoints.login(ApiConstants.Endpoints.LOGIN);
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            switch (response.code()) {
                case HttpURLConnection.HTTP_OK:
                    EventBus.getDefault().post(new EventModel(EventConstants.LOGIN, true));
                    break;
                /*
                Login credentials are not correct
                */
                case HttpURLConnection.HTTP_UNAUTHORIZED:
                    EventBus.getDefault().post(new EventModel(EventConstants.LOGIN, ApiConstants.Actions.NOTHING, ApiConstants.ErrorMessage.LOGIN_FAILED));
                    break;

                default:
                    EventBus.getDefault().post(new EventModel(EventConstants.LOGIN, ApiConstants.Actions.NOTHING, ApiConstants.ErrorMessage.DEFAULT));
                    break;
            }
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            EventBus.getDefault().post(new EventModel(EventConstants.LOGIN, ApiConstants.Actions.NOTHING, t.getMessage()));
        }
    });

Выше код выполняется очень хорошо, за исключением одного сценария. Сценарий таков:

  1. Создайте сеть Wi-Fi с устройством Alcatel LINKZONE MW40CJ 4G MiFi.
  2. Подключите мое устройство Vuzix к созданной выше сети.
  3. Откройте мое приложение на Vuzix и нажмите API входа.
  4. Произошло исключение ConnectException.

Ниже приведены детали исключения, которые я получил внутри onFailure(Call<ResponseBody> call, Throwable t) метод:

cause = java.net.ConnectException: failed to connect to /103.80.52.22 (port 8000) after 10000ms: connect failed: ENETUNREACH (Network is unreachable)
detailMessage = "Failed to connect to /103.80.52.22:8000"

За исключением приведенного выше сценария все работает отлично. Я пробовал ниже сценарии, которые работают нормально:

  1. Vuzix подключен к домашнему WiFi роутеру.
  2. Vuzix подключен к мобильной точке доступа.
  3. Vuzix подключен к точке доступа ноутбука (Windows 10), а ноутбук подключен к домашнему WiFi-роутеру.
  4. Vuzix подключен к точке доступа ноутбука (Windows 10), а ноутбук подключен к сети Wi-Fi устройства Alcatel LINKZONE MW40CJ 4G MiFi. (Даже в этом случае API работает нормально).
  5. Хит API из браузера, когда ноутбук (Windows 10) подключен к сети Wi-Fi устройства Alcatel LINKZONE MW40CJ 4G MiFi.

Я не знаю, почему API не работает, когда я напрямую подключаю свой Vuzix к сети Wi-Fi устройства Alcatel LINKZONE MW40CJ 4G MiFi.

Пожалуйста помоги!!!

0 ответов

Другие вопросы по тегам