Однако это не работает, когда API следующий, даже если следующий API отлично работает в моем браузере, работающем на том же компьютере, и в приложении Postman.
http://127.0.0.1:8000/api/update/1/
Я прилагаю код, в котором выполняется вызов API.
protected String doInBackground(String... args) { Stringxml=""; Stringapi="http://127.0.0.1:8000/api/update/1/"; // returns NULL works in Postman app and in the browser // String api = "http://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=8190df9eb51445228e397e4185311a66"; // works in all places StringurlParameters=""; xml = Function.excuteGet(api, urlParameters); return xml; }
Кто-нибудь может мне помочь с этим?
Переведено автоматически
Ответ 1
Если вы тестируете свое приложение с реального устройства Android, то вам необходимо указать IP-адрес вашего компьютера, когда вы пытаетесь подключиться к вашему серверу Django через API. И да, вы также должны быть в той же сети. Итак, вам нужно проверить следующие вещи.
Убедитесь, что компьютер (на котором вы запускаете сервер) и устройство Android (на котором вы тестируете свое приложение) находятся в одной сети (возможно, подключены к одной и той же сети Wi-Fi).
Убедитесь, что вы подключаетесь к IP-адресу вашего компьютера, на котором запущен сервер. Например, прямо сейчас IP-адрес вашего компьютера 192.168.0.100. Затем вам нужно подключиться к этому IP-адресу и вызвать свой API следующим образом.
http://192.168.0.100:8000/api/update/1/
Убедитесь, что вы принимаете запросы к порту 8000 на вашем ПК. Проверьте конфигурацию брандмауэра, блокирует ли он любые входящие запросы к 8000 порту. Если обнаружена блокировка, пожалуйста, разрешите входящий запрос на 8000 порт, используя следующее.
sudo ufw allow 8000/tcp
Если вам ничего не помогает, пожалуйста, проверьте свой код Android, чтобы убедиться, что вызов API в порядке. Я бы настоятельно рекомендовал использовать Volley для вызовов API, предложенный в документации для разработчиков.
Последнее, но не менее важное, пожалуйста, проверьте, есть ли у вас необходимые разрешения в вашем AndroidManifest.xml файле. Вам необходимо добавить следующее разрешение, чтобы предоставить вашему приложению доступ в Интернет.
To be able to connect your localhost (I assume you are using emulator, I can edit the answer if not)
You need to use the following url:
http://10.0.2.2:8000/
Ответ 3
Please run your django development server using the following command.
python manage.py runserver 0.0.0.0:8000
Once you get it running, in a new terminal window find out the ip address of your computer in your wifi/network subnet using the following command
Ipconfig or ifconfig(depends on your OS)
Then change the base url of your api from 127.0.0.1 to the ip you found in the above step. Now connect the android phone in which your app is being tested to your same wifi or network to which the computer running django is connected. Now you can request and receive response.
127.0.0.1 is the home of your system, your android app will not be able to access that. You need to do it like this.
Ответ 4
1)Andoird manifest to put internet permission and network acceess 2) if using Android simulator on local machine. Use 10.0.2.2. alias created by default for 127.0.0.1 i.e losthoast.