Android MySQL Connection

1

Я пытаюсь подключиться к php-MySQL, используя ниже код

try{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://127.0.0.1/mytable.php");
    // HttpPost httppost = new HttpPost("http://localhost/mytable.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
}catch(Exception e){
     Log.e("log_tag", "Error in http connection"+e.toString());
}

когда управление httpclient.execute(httppost); на httpclient.execute(httppost); он выдает исключение:

org.apache.http.conn.HttpHostConnectException: Connection to http://127.0.0.1 refused

Я также добавляю <uses-permission android:name="android.permission.INTERNET"/> в файл AndroidManifest.xml.

Когда я тестирую свой php файл непосредственно из браузера, он отлично работает. Какие-либо предложения?

Теги:

2 ответа

6
Лучший ответ

Из эмулятора, il вы хотите получить доступ к своему физическому компьютеру, вы должны использовать следующий IP-адрес:

10.0.2.2

Тот, который вы использовали, 127.0.0.1, указывает на машину, внутри которой выполняется ваш код, то есть сам эмулятор.
Поскольку у вас нет HTTP-сервера, запущенного на вашем эмуляторе Android, ваше приложение не может подключиться к нему, что объясняет полученное сообщение об ошибке.


Для получения дополнительной информации вы должны прочитать следующий раздел руководства: Сетевое адресное пространство

  • 0
    Джинкс - но твой ответ лучше.
  • 0
    Привет спасибо . теперь я сталкиваюсь с java.net.SocketException: тайм-аут операции из-за того же метода HttpResponse response = httpclient.execute (httppost); как я также установил лимит времени ожидания public static final int HTTP_TIMEOUT = 90 * 1000; mHttpClient = new DefaultHttpClient (); окончательные параметры HttpParams = mHttpClient.getParams (); HttpConnectionParams.setConnectionTimeout (params, HTTP_TIMEOUT); HttpConnectionParams.setSoTimeout (params, HTTP_TIMEOUT); ConnManagerParams.setTimeout (params, HTTP_TIMEOUT);
Показать ещё 3 комментария
1

127.0.0.1 - это localhost, текущее устройство. На вашем компьютере это относится к вашему компьютеру, но на устройстве или эмуляторе это относится к этому устройству.

См. Этот документ о том, как обращаться к локальному хосту вашего компьютера при работе в эмуляторе. Кроме того, вы можете изменить 127.0.0.1 на фактический IP-адрес вашего компьютера.

http://developer.android.com/resources/faq/commontasks.html#localhostalias

Ещё вопросы

Сообщество Overcoder
Наверх
Меню