Fehler in http-Verbindung android.os.networkonmainthreadexception

Schrieb ich app für android und ich habe ein problem. Es funktioniert auf dem Handy aber es funktioniert nicht auf dem tablet.
Ich habe die Fehlermeldung : Fehler im http-Verbindung android.os.networkonmainthreadexception. Es ist mein code:

public class AktualizacjaActivity {
public static final String KEY_121 = "http://xxx.php";

public String getServerData(String returnString,Context context) {
    DatabaseAdapter db1 = new DatabaseAdapter(context);
    db1.open();
    String question="";
    try
    {

        Cursor c = db1.makeCursor(DatabaseAdapter.STRUCT, new String[] {DatabaseAdapter.ID},DatabaseAdapter.KODE_ID+"='"+returnString+"'",null);
        c.moveToFirst();
        question+="NOT IN('";
        while(!c.isLast())
        {
        question+=c.getString(c.getColumnIndex(DatabaseAdapter.ID))+"','";
        c.moveToNext();
        }
        question+=c.getString(c.getColumnIndex(DatabaseAdapter.ID))+"')";

    }
    catch(Exception e)
    {

    }

    db1.close();
    if(question.equalsIgnoreCase("NOT IN('")) question="";


   InputStream is = null;

   String result = "";
    //the year data to send, warunek rok większy od 1980
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("code_id",returnString));
    nameValuePairs.add(new BasicNameValuePair("no", question));

    //http post
    try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(KEY_121);
            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-2"),8);
            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 json data
    DatabaseAdapter db = new DatabaseAdapter(context);
    db.open();
    try{


            JSONArray jArray = new JSONArray(result);

            for(int i=0;i<jArray.length();i++){
                    JSONObject json_data = jArray.getJSONObject(i);

                  db.addItmem("INSERT INTO my_kodeks_struktura VALUES("  
                    +json_data.getInt("id")+","
                    +json_data.getInt("code_id")+","+
                    json_data.getInt("position_art")+",'"+
                    json_data.getString("position_art_a")+"',"+
                    json_data.getInt("level")+",'"+
                    json_data.getString("name")+"');");



            }


    }catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
    }
    db.close();
    return "Upd"; 

}    



}
  • zehn błąd tylko na-API >= 13, po prostu nie rób operacji związanych z siecią na głównym wątku aplikacji... użyj AsyncTask albo wątków
InformationsquelleAutor Unmerciful | 2012-04-18
Schreibe einen Kommentar