Android приложение не может отправить запрос через NGROK на реальном устройстве - PullRequest
1 голос
/ 11 февраля 2020

Я знаю, что есть много похожих вопросов, но мой - особенный. У меня есть Android приложение, использующее NodeJS Back-end на localhost: 3000. Для того, чтобы протестировать мое приложение на моем реальном устройстве (и другом друг от меня так далеко), я использую Ngrok для перенаправления запросов. Затем, на Почтальоне, я могу связаться с BackEnd через Ngrok. Когда я запускаю свое приложение в эмуляторе Android Studio, запросы, отправленные из приложения, могут поступать в BackEnd через Ngrok. На моем реальном устройстве, когда я открываю браузер и отправляю / получаю, я также могу связаться с BackEnd через Ngrok. Но, когда я запускаю свое приложение на своем реальном устройстве (я установил apk-debug, сгенерированный из Android Studio), на запрос нет никакого ответа, и я не вижу Ngrok, получающего его в журналах, ни Back -конец.

 Retrofit retrofit = new Retrofit.Builder()
            //.baseUrl("http://10.0.2.2:3000/")
            .baseUrl("http://1e2b8b83.ngrok.io/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

1 Ответ

1 голос
/ 11 февраля 2020

Я нашел это: Android P-версия блокирует запросы к HTTP-серверам. Мы должны либо связаться с сервером HTTPS, либо использовать быстрое решение. Исправление заключается в том, чтобы создать файл xml со следующим содержанием:

<network-security-config>
<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">2b8e18b3.ngrok.io</domain>
    <domain includeSubdomains="true">localhost</domain>
</domain-config>

, а затем добавить его в приложение MANIFEST balise следующим образом:

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

Большое спасибо парню, который написал эту статью: https://medium.com/mindorks/my-network-requests-are-not-working-in-android-pie-7c7a31e33330

...