Хотя этот вопрос задавался несколько раз в StackOverflow, и я прошел через многие из них, но я не мог решить свою проблему, или я не могу выяснить причину проблемы. Отсюда, отправляя новый вопрос.
Ниже приведен список ссылок, которые я просмотрел –
Как подключиться к моему http: // localhost веб-серверу от Android Emulator в Eclipse
Доступ к локальному хосту: порт с эмулятора Android
Как я могу получить доступ к моему локальному хосту с моего устройства Android?
как подключиться к localhost в эмуляторе Android?
Вот мой код –
protected Void doInBackground(Void... params) { try { HttpURLConnection connection = null; URL url = new URL("http://10.0.2.2:8080/android_connect/user_registration.php"); connection = (HttpURLConnection)url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod("POST"); connection.setUseCaches(false); connection.setConnectTimeout(720000000); connection.setReadTimeout(72000000); connection.connect(); OutputStreamWriter output = new OutputStreamWriter(connection.getOutputStream()); output.write(emp_details.toString()); output.flush(); output.close(); HttpResult = connection.getResponseCode(); connection.disconnect(); } catch(Exception e) { e.printStackTrace(); } return null; }
Я пытаюсь подключить Android с базой данных MySQL, используя PHP через WAMP-сервер. Файл PHP (user_registration.php) сохраняется в следующем пути –
C:\wamp\www\android_connect
Теперь после выполнения кода я получаю сообщение об ошибке « java.net.SocketTimeoutException: не удалось подключиться к / 10.0.2.2 (порт 8080) после 720000000ms: isConnected failed: ETIMEDOUT (Connection timed out) ».
Я рассмотрел конкретную ссылку, чтобы решить эту проблему –
Android-соединение с локальным хостом
Но не мог понять, как это было разрешено! 🙂
Не могли бы вы помочь мне в этом случае? Обратите внимание, что я использую Android Studio для моей сборки.
Заранее спасибо!
Я выяснил причину, почему он не работает. Было два вопроса –
IP-адрес был неправильным. Поэтому я изменил IP-адрес с 10.0.2.2
на IPv4
адрес.
Также номер порта 8080 был неправильным. Я установил свой собственный номер порта в файле httpd.conf
, например ##Listen 12.34.56.78:8383Listen 0.0.0.0:8383Listen [::0]:8383##
, под Apache, и я использовал то же самое.
После изменения обоих и повторного запуска WAMP-сервера он работал как шарм.
Выполнение соединения с вашим Android на ваш компьютер работает с 10.0.2.2 только на Виртуальном устройстве Google Android. Android Virtual Devices прослушивают 10.0.2.2 и перенаправляют все запросы на ваш компьютер.
Genymotion Android Virtual Devices прослушивают 10.0.2.3 и перенаправляют эти запросы на ваш компьютер.
10.0.2.2 не работает с вашим реальным устройством Android. Если вы хотите использовать его на своем реальном устройстве, вам нужно установить IP-адрес вашего компьютера, как было предложено в предыдущем ответе.