Не удается подключиться к локальному хосту в эмуляторе Android - PullRequest
0 голосов
/ 27 января 2019

Я видел, что этот вопрос задавался ранее, но решения до сих пор не работали для меня.Надеюсь, кто-то сможет пролить свет на то, что я делаю неправильно:

У меня есть djangorestframework + postgresql в качестве моего бэк-энда на моем ноутбуке.Android-проект также находится на том же ноутбуке.

В браузере я могу получить доступ к строке json, например, по следующему URL-адресу на моем ноутбуке, когда сервер работает:

http://127.0.0.1:8000/posts/

Теперь в моем эмуляторе Android я использую следующее (как это предлагается во многих разрешениях) для извлечения строки json:

http://10.0.2.2:8000/posts/

, но она отвечает как Bad Request.

Я хотел убедиться в правильности установки в проекте Android, поэтому я проверил и увидел, что он может читать json api из интернет-URL без проблем.

Я также использую okhttp3 для получения json из URL.

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

Спасибо,

, вот мой код Java:

url2 = "http://10.0.2.2:8000/posts/";

client = new OkHttpClient();
request = new Request.Builder()
        .url(url2)
        .build();


client.newCall(request).enqueue(new Callback() {

    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        if (response.isSuccessful()) {
            final String jsonResponse = response.body().string();
            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    m_textView.setText(jsonResponse);
                }
            });
        } else {
            Log.d("AMIRSERVER", jsonResponse);
        }
    }

});

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Благодаря Эриху, я поставил

ALLOWED_HOSTS = ["10.0.2.2"]

в настройках Django, и это сработало !!!

0 голосов
/ 28 января 2019

У меня была такая же проблема, но мой бэкэнд на IIS в C # на Win10.Я просто изменил файл 'hosts' проекта, чтобы принимать IP-адреса 192.168.0.1 и 10.0.2.2.До того, как он просто принимал вызовы localhost, поскольку он является единственной записью в файле hosts.

Ваш сервер может иметь что-то подобное ...

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