http连接android.os.networkonmainthreadexception错误

时间:2012-04-18 11:35:02

标签: android connection tablet

我为Android编写应用程序,我有一个问题。它适用于手机,但它不适用于平板电脑。 我有错误:http连接android.os.networkonmainthreadexception错误。这是我的代码:

公共课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"; 

}    



}

1 个答案:

答案 0 :(得分:2)

正如异常所说:你不能在ui线程上进行http调用。至少不是在新的操作系统上。

考虑使用AsyncTask进行此类调用。