Не удается подключиться к локальному хосту в эмуляторе Android

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

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

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

http://127.0.0.1:8000/сообщения/

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

http://10.0.2.2:8000/сообщения/

но он отвечает как 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);
        }
    }

});

🤔 А знаете ли вы, что...
Java позволяет создавать распределенные системы с использованием технологии Java RMI (Remote Method Invocation).


624
2

Ответы:

Решено

У меня была такая же проблема, но мой бэкэнд находится на IIS в С# на Win10. Я только что изменил файл hosts проекта, чтобы он принимал IP-адреса 192.168.0.1 и 10.0.2.2. Раньше он просто принимал вызовы на «localhost», поскольку это была единственная запись в файле «hosts».

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


Благодаря Эриху, я кладу

ALLOWED_HOSTS = ["10.0.2.2"]

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