我已经看到过有人问过这个问题,但是到目前为止,这些决议对我而言并不奏效。希望有人可以阐明我做错了什么:
我的笔记本电脑上有djangorestframework + postgresql作为后端。 android项目也位于同一台笔记本电脑上。
在浏览器中,当服务器运行时,我可以通过笔记本电脑上的以下URL访问json字符串:
现在在我的android模拟器上,我正在使用以下命令(如许多决议所述)来获取json字符串:
但它会作为错误请求进行响应。
我想确保安装程序在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);
}
}
});
答案 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设置中,它起作用了!!