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