React native assembleRelease не может получить данные с помощью axios

У меня есть работающий API для отдыха, возвращающий данные JSON, созданные с помощью nodeJS и загруженные на веб-сервер. Также я использую React Native для создания внешнего интерфейса для Android и IOS. API работает нормально и возвращает данные, как и ожидалось, когда я создаю отладочную версию приложения в Android, используя «react-native run-android». Но приложение, похоже, не может получить данные из API, пока я создаю версию выпуска в Android, используя «cd android && ./gradlew assembleRelease». Я не вижу никаких обращений к серверу узла из моего приложения. Я использую axios для своих http-запросов.

Может ли это быть связано с тем, что вы пытаетесь получить данные из http вместо https? Если это так, проверьте это решение: github.com/facebook/react-native/issues/…

Samuli Hakoniemi 21.05.2019 11:56
2
1
1 597
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Моя проблема решена. Согласно официальной документации Google, запросы к веб-серверу возможны только с защищенным доменом с действующим SSL-сертификатом.

"yourProject/android/app/src/main/res/xml/network_security_config.xml"

со следующим содержанием-

<?xml version = "1.0" encoding = "utf-8"?>
<network-security-config>

    <domain-config cleartextTrafficPermitted = "true">

        <!-- For React Native Hot-reloading system -->
        <!-- If you are running on a device insert your computer IP -->
        <domain includeSubdomains = "true">localhost</domain>
        <domain includeSubdomains = "true">your own domain ip</domain>

        <trust-anchors>
            <certificates src = "system" />
            <certificates src = "user" />
        </trust-anchors>

    </domain-config>

    <base-config cleartextTrafficPermitted = "false" />

</network-security-config>

а затем импортируйте файл xml, добавив эту строку в AndroidManifest.xml между тегом приложения:

<application...
    android:networkSecurityConfig = "@xml/network_security_config"
...>

Привет! Мне не помогло, есть другие предложения? Спасибо!

Gabriel Augusto 21.09.2021 19:50

привет .. даже я застрял. не работал для меня. перепробовал почти все. любое предложение, пожалуйста. Спасибо

UGandhi 23.09.2021 17:41

Добавление android:usesCleartextTraffic = "true" в android/app/src/main/AndroidManifest.xml мне подходит. Возможно, мы также захотим добавить в папку отлаживать (сестра основной) для целей разработки.

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

Невозможно изменить продолжительность анимации для отмены выбора анимации
Как изменить текстовое поле, чтобы курсор не закрывался?
Добавить пользовательскую панель инструментов в каждое представление в Swift, используя панель навигации или создав собственный класс?
IONIC 4: «ionic cordova build ios» не показывает неудачную или успешную сборку с Xcode 10.1
Заставить AuthListener ждать завершения цикла for
Поточно-ориентированные очереди
Swift — передача данных из родительского контроллера представления в дочерний контроллер представления
Какой язык программирования я могу использовать для разработки приложений для Android и iOS в качестве интерфейса и django в качестве сервера?
IOS: при покупке приложения не отображается общая презентация
Быстрая загрузка multipart/form-data с добавлением массива строк в тело (проблема: массив передается как строка на сервер)