HTTP POST запрос ANDROID 4 (работает в версии 2.3)?

Итак, вот сделка, я закодировал приложение, которое запрашивает через HTTP (post) данные из веб-url, данные возвращаются с использованием массивов JSon, и я разбираю эти массивы, чтобы получить то, что я хочу.

До тех пор, пока там нет проблем с использованием Android 2.3.x, но когда я тестирую его на Android 4, он просто не работает.

Вот мой код:

public boolean testConexio(){ boolean status = false; String rutaServer = "URL.php"; //Log.e("log_tag", "Ruta server: "+rutaServer); InputStream is = null; String result = ""; String temporal; //Valors a demanar/enviar ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("param1",config.getUserDB())); // parametros POST! nameValuePairs.add(new BasicNameValuePair("param2",config.getPassDB())); // parametros POST! //http post try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(rutaServer); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8")); // valors POST UTF 8 coded <-- I KNOW! this is the way i need them spanishfag here 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()); } //Convierte la respuesta a String try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8); // again, spanishfag here StringBuilder sb = new StringBuilder(); String line = null; 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()); } //Parse la respuesta JSon try{ JSONObject jArray = new JSONObject(result); temporal = jArray.getString("status"); if(temporal.equals("true")){ status = true; } Log.i("log_tag","Status: "+jArray.getString("status")); }catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); } return status; } 

Может ли кто-нибудь сказать мне, что я делаю неправильно? Или что мне нужно изменить, я искал немного сейчас, и я не могу заставить его работать на Android 4.

БЛАГОДАРЯ!

Вы должны поместить это в задачу Async, она не будет работать в основном потоке в 3.0>

использовать это:

 public class PostTask extends AsyncTask<Void, String, Boolean> { @Override protected Boolean doInBackground(Void... params) { boolean result = false; //All your code goes in here //If you want to do something on the UI use progress update publishProgress("progress"); return result; } protected void onProgressUpdate(String... progress) { StringBuilder str = new StringBuilder(); for (int i = 1; i < progress.length; i++) { str.append(progress[i] + " "); } } } 

Вам нужна ссылка на него вне асинхронной задачи

 PostTask posttask; 

То вам нужно запустить его

 posttask = new PostTask(); posttask.execute(); 

У меня была такая же проблема пару дней назад, goodluck

С Android 4.0 вы не можете использовать http-соединение, не используя Thread (с runnable, asyinctask …)

Лучшее, что вы можете сделать, это реализовать Thread, но если вы не можете сделать это, вы не можете удалить в андроиде манифест андроида: targetVersion = "14".

Если вам нужны элементы версии 14 / выше, такие как тема Holo или что-то, что вы можете настроить в

Правильный клик в проекте -> Propierties -> Android -> Project Built Target = 14 или что вы хотите