REST API (http и https) Ajax Call не работает в последней версии Cordova Ver 10.0.0

Я разработал приложение с помощью Cordova 9.0.0, и оно находится в разработке уже более лет. Недавно, несколько дней назад, я обновил свою версию Cordova с 9.x до 10.x. После обновления вызовы Http и Https (REST API) не работают в сборке выпуска.

Хотя вызовы API работают нормально в сборке отладки для Android, протестированной на реальном устройстве Android (Realme 3 pro) и в браузере Chrome.

Поскольку проблема возникла в сборке выпуска, я не могу вести журнал ошибок.

Я использую AJAX для вызовов API.

Примечание. Все API REST размещаются на HTTPS.

Вызов AJAX

$.ajax({
    type: "POST",
    url: "https://example.com/methodName",
    data: {
        data: mYData
    },
    contentType: 'application/x-www-form-urlencoded',
    timeout: 30000,
    success: function (data) {},
    error: function (message, textStatus) {}

Похожие запросы:

  1. Вызовы Http и Https не работают после обновления Cordova
  2. Мой выпуск apk вылетает сразу, но приложение отладки работает правильно ionic 5

РЕДАКТИРОВАТЬ: Ниже ответ об ошибке - журнал вызова API.

введите описание изображения здесь


person Jagrit Vishwakarma    schedule 11.01.2021    source источник
comment
Вы пробовали добавить alert(message) в свой error: function() своего AJAX, а затем пробовали тестировать? Если есть какая-либо ошибка, вы можете увидеть, что в окне предупреждения на любом устройстве установлено приложение.   -  person Not A Bot    schedule 11.01.2021
comment
@NotABot Да, там написано [Object Object]   -  person Jagrit Vishwakarma    schedule 11.01.2021
comment
@NotABot Хорошо, позволь мне проверить и скоро свяжусь с тобой   -  person Jagrit Vishwakarma    schedule 11.01.2021
comment
Создайте <div> для тестирования в своем приложении, затем скопируйте данные из JSON.stringify() в этот <div> и затем проверьте наличие ошибок.   -  person Not A Bot    schedule 11.01.2021
comment
@NotABot Привет, я только что сбросил объект в тестовый Div, и он говорит {"readyState":0, "status":0, "statusText":"error"}. Я впервые вижу такую ​​ошибку; /   -  person Jagrit Vishwakarma    schedule 11.01.2021
comment
Можете ли вы обновить свой вопрос и опубликовать изображение полного ответа, которое вы получаете, и получаете ли вы какие-либо responseText?   -  person Not A Bot    schedule 11.01.2021
comment
Кроме того, это может быть связано с cross-domain запросами, которые вы пытаетесь отправить из приложения на свой сервер, и в Cordova 10.x эти междоменные запросы, возможно, было сложнее выполнить без надлежащей аутентификации.   -  person Not A Bot    schedule 11.01.2021
comment
@NotABot обновил мой вопрос, также я не получаю responseText только три пары ключ-значение, упомянутые на скриншоте выше.   -  person Jagrit Vishwakarma    schedule 11.01.2021
comment
Проверьте свой Access-Control-Allow-Origin, а также сертификат HTTPS. На сервере установлен HTTPS, поскольку вы отправляете запрос с использованием HTTPS. Поскольку в вашем коде нет проблем, остается только проблема связи с сервером.   -  person Not A Bot    schedule 11.01.2021
comment
@NotABot, спасибо, что помогли мне разобраться в проблеме. Это мне очень помогло :))   -  person Jagrit Vishwakarma    schedule 13.01.2021


Ответы (1)


Публикация решения моего собственного вопроса для разработчиков, столкнувшихся с той же проблемой, а также для использования в будущем.

Решение

Добавьте атрибут android:usesCleartextTraffic в true в файле AndroidManifest.xml внутри тега <application>.

Причина

Если для атрибута установлено значение "false", компоненты платформы (например, HTTP- и FTP-стеки, DownloadManager и MediaPlayer) будут отклонять запросы приложения на использование трафика открытого текста.

Для получения более подробной информации посетите https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic

person Jagrit Vishwakarma    schedule 13.01.2021