无法在android仿真器中连接本地主机

时间:2019-01-27 20:45:48

标签: java postgresql android-studio django-rest-framework 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从网址获取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);
        }
    }

});

2 个答案:

答案 0 :(得分:0)

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

您的服务器可能有类似的内容...

答案 1 :(得分:0)

感谢Erich, 我放

ALLOWED_HOSTS = ["10.0.2.2"]

在我的Django设置中,它起作用了!!