Intereting Posts
Как проверить строковый массив пустым или нулевым андроидом? Как правильно клонировать проект Android с помощью Eclipse и Mercurial Блокировка телефона Android после того, как пользователь набирает номер телефона Android – Как переопределить кнопку «Назад», чтобы она не закончила () мою активность? Использование языковых настроек для определения того, как использовать имперские единицы Android ViewPager с изображениями: утечка памяти / сбои приложений Как реализовать функции, такие как Facebook «Новая история»? Android – Загрузка, пожалуйста, подождите Увольнение ProgressDialog в android Использование SDK Google Диска с Android Вы не приняли лицензионные соглашения следующих компонентов SDK Android заканчивает предыдущие действия для навигации Карта v2 ПоддержкаMapFragment внутри Viewpager Обходной путь для дублирующих классов в ароматах Gradle и основных Как выполнить HTTP-запросы через Wi-Fi непосредственно с Android Wear?

Android-соединение с локальным хостом

Я пытаюсь подключить свое приложение для Android к локальному URL-адресу хоста благодаря серверу wamp, но он не работает. Моя цель здесь – получить данные json и проанализировать эти данные. Для моего теста я использую устройство, а не эмулятор, и я использую разрешение в AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 

Мой url выглядит так:

 String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php"; 

Я пытался :

 http://localhost/ http://10.0.2.2:8080/ http://10.0.2.2/ 

Но он так долго не работал:

  java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused) failed to connect to /10.0.2.2 (port 8080): connect failed: ETIMEDOUT (Connection timed out) java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect failed: ETIMEDOUT (Connection timed out) 

Затем я попытался с помощью теста json url, найденного в Интернете: http://headers.jsontest.com/

Он работал очень хорошо, и я получил данные json по этому адресу. Так что, я думаю, мой код хорош, и проблема здесь в моем localhost url, я не знаю, какая должна быть его точная форма. Я прочитал много потоков об этом, но я не нашел решения.

Здесь мой код:

Основная деятельность :

 public class MainActivity extends Activity { private String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php"; private ListView lv = null; private Button bGetData; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final JsonDownloaderTask task = new JsonDownloaderTask(this); lv = (ListView) findViewById(R.id.list); bGetData = (Button)findViewById(R.id.getdata); bGetData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { task.execute(url); } }); } public void jsonTaskComplete(JSONArray data){ //todo } } 

AsyncTask:

 public class JsonDownloaderTask extends AsyncTask<String, String, JSONArray> { MainActivity ma; public JsonDownloaderTask(MainActivity main){ ma = main; } @Override protected JSONArray doInBackground(String... url) { JSONParser jParser = new JSONParser(); // Getting JSON from URL JSONArray jsonArray = null; try { jsonArray = jParser.getJSONFromUrl(url[0]); } catch (IOException e) { e.printStackTrace(); } return jsonArray; } protected void onPostExecute(JSONArray data){ ma.jsonTaskComplete(data); } } 

JSONParser:

 public class JSONParser { String data = ""; JSONArray jsonArray = null; InputStream is = null; public JSONParser(){} // Method to download json data from url public JSONArray getJSONFromUrl(String strUrl) throws IOException{ try{ URL url = new URL(strUrl); // Creating an http connection to communicate with url HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // Connecting to url urlConnection.connect(); // Reading data from url is = urlConnection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); StringBuffer sb = new StringBuffer(); String line = ""; while( ( line = br.readLine()) != null){ sb.append(line); } is.close(); data = sb.toString(); //br.close(); jsonArray = new JSONArray(data); }catch(Exception e){ Log.d("Exception while downloading url", e.toString()); }finally{ is.close(); } return jsonArray; } } 

Solutions Collecting From Web of "Android-соединение с локальным хостом"

Сначала вам нужно привязать IP-адрес машины, на которой работает ваш сервер, в настройках затмения.

Вы можете сделать это вот так.

Конфигурация запуска Eclipse

Щелкните правой кнопкой мыши на проекте PHP в eclipse, затем запустите «Конфигурация», а затем в Web Application где вы найдете вкладку « Argument ». Теперь дайте IP-адрес порта и локальной сети вашего компьютера, на котором работает ваш сервер.

Что-то вроде этого –port = 8888 –address = 192.168.1.6, затем обновите URL-адрес до http://192.168.1.6:8080/tests/PhpProject1/connectionBDD.php

Здесь, в моем случае это мой IP-адрес LAN 192.168.1.6, вам нужно будет найти его с помощью сетевой команды, такой как ipconfig , ifconfig и использовать этот IP-адрес.

IP-адрес 10.0.2.2 используется для извлечения данных из эмулятора. Localhost всегда укажет на устройство эмулятора / андроида, запускающее приложение. Чтобы ваше устройство извлекало данные с вашего компьютера, оно должно находиться в одной сети (подключенной WiFi к вашему маршрутизатору), и вы должны использовать локальный IP-адрес своего компьютера (обычно 192.168.1.x-номер).

Если вы попытаетесь подключиться к «localhost», он решит Android-устройство, а не ваш собственный localhost (если вы не работаете в эмуляторе). Что я рекомендую для разработки, так это добавить меню переполнения в панели действий, в котором есть запись с именем «Настройки», которая предоставляет действие «Настройки» для указания параметров приложения и иметь запись «Параметры разработчика» в «Настройки», которая позволяет указать Пользовательский адрес сервера для использования. Во время разработки вы можете использовать эту опцию для ввода пользовательского адреса сервера для своего приложения. (Вам понадобится реальный адрес сервера, который действительно доступен через Интернет, а не использование localhost для этого).

Я предполагаю, что вы пытаетесь получить доступ к веб-сервису, доступному на вашем ПК, либо с помощью симулятора Android, либо с помощью реального устройства.

Для эмулятора Android вы НЕ должны просто использовать «localhost», потому что «localhost» означает сам эмулятор Android, а не хост-компьютер.

Вам необходимо изменить файл / etc / hosts или симулятор или реальное устройство. Добавьте строку типа «192.168.0.100 service.local».

Один простой способ, который я знаю, – это поддерживать мобильные данные и делиться Wi-Fi. Подключите ноутбук или компьютер к этому Wi-Fi. Теперь см. Ip ур ноутбук или рабочий стол. Позвоните по телефону с телефона. Так как ваш телефон и компьютер находятся в одной сети.

Я попробовал "10.0.2.2:80/mysitename/page.php" Чудо получилось, оно работает сейчас. Я нахожусь на Mac и использую XAMPP для сервера.

Вы можете изменить номер порта. До 80 и попробуйте. Порт 8080 не работал для меня!

Приветствия.