Ошибка подключения HTTP POST

Я использую класс для использования HTTP POST и получения данных из базы данных через php / json и преобразования его в строку.

Проблема в том, что я получаю "Error in http connection android.os.NetworkOnMainThreadException" в LogCat. Я тестирую это на эмуляторе, и я использую правильный адрес порта. Я знаю это, потому что порт отлично работает в других частях приложения (загрузка HTML из Localhost). Если я запустил php-файл в настольном браузере, он работает нормально. Я также знаю, что разрешения правильно установлены в mySQL для 10.0.2.2 и пользователя, установленного в файле входа php.

Поэтому мой вопрос: кто-нибудь приходит по одной и той же проблеме, и если да, то поняли, в чем проблема или какие идеи я должен искать?

Thnx за вашу помощь!

 public void loadQuery(String p) { String qO = getIntent().getStringExtra("QUERY_ORDER"); ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); // http post try { HttpClient httpclient = new DefaultHttpClient(); // HttpPost httppost = new HttpPost("http://10.0.2.2/Andaero/php/" + // p + qO + ".php"); //Hard coded the php link to make sure --> HttpPost httppost = new HttpPost( "http://10.0.2.2/Andaero/php/regulatory_list_ASC.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()); } // convert response to string try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); sb = new StringBuilder(); sb.append(reader.readLine() + "\n"); String line = "0"; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result = sb.toString(); } catch (Exception e) { Log.e("log_tag", "Error converting result " + e.toString()); } setListAdapter(new QueryAdapter(this, result)); } 

Кажется, что вы можете выполнять сетевые операции в основном потоке вашего приложения (это общая причина для того, чтобы это исключение было выбрано).

Вы никогда не должны этого делать. Основной поток должен быть посвящен только взаимодействию с пользователем, и все сетевое взаимодействие должно быть выгружено на вторичные потоки (например, используйте AsyncTask).

Для получения дополнительной информации хорошее чтение: http://developer.android.com/guide/practices/design/responsiveness.html