无法在 android 模拟器中连接本地主机

Cannot connect the local host in android emulator

我看到以前有人问过这个问题,但到目前为止这些解决方案对我不起作用。希望有人可以阐明我做错了什么:

我的笔记本电脑上有 djangorestframework+postgresql 作为我的后端。 android 项目也在同一台笔记本电脑上。

在浏览器中,当服务器为 运行:

时,我可以在笔记本电脑上通过以下 URL 访问 json 字符串

http://127.0.0.1:8000/posts/

现在在我的 android 模拟器上,我正在使用以下内容(如许多决议中所建议的那样)来获取 json 字符串:

http://10.0.2.2:8000/posts/

但它响应为错误请求。

我想确保 Android 项目中的设置是正确的,所以我测试并发现它可以从互联网 URL 读取 json api 而没有问题。

我也在使用 okhttp3 从 url 获取 json。

谁能告诉我我做错了什么。

谢谢,

这是我的 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);
        }
    }

});

我遇到了同样的问题,但我的后端在 Win10 上的 C# 中的 IIS 上。我刚刚修改了项目 'hosts' 文件以接受 192.168.0.1 和 10.0.2.2 IP。在它只是接受对 'localhost' 的调用之前,因为它是 'hosts' 文件中的唯一条目。

您的服务器可能有类似的东西...

感谢埃里希, 我放

ALLOWED_HOSTS = ["10.0.2.2"]

在我的 Django 设置中成功了!!!