AsyncTask在4.0.4上不工作



我在下面创建了一个类,它连接到internet并向php脚本发送请求。我像AsyncTask一样创建它,而不是在主线程中为了在4.0.4上工作,但是当我测试它时,它不起作用,尽管它在2.2上工作得很好。你知道是什么问题吗?

class download extends AsyncTask<String, Integer, String> {
        protected String doInBackground(String s1, String s2) {
            String result = "";
            //http post
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("Vreme", s1));
            nameValuePairs.add(new BasicNameValuePair("Datum", s2));
            InputStream is = null;
            try {
                String adresa = "http://senzori.open.telekom.rs/script.php";
                HttpPost httppost = new HttpPost(adresa);
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpClient httpclient = new DefaultHttpClient();
                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);
                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());
            }
            return result;
        }
        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            return null;
        }
    }

这可能是因为你重载了doInBackground,但没有调用重载的方法。

把它改成这样:

@Override
protected String doInBackground(String... params) {
    return doInBackground (params[0], params[1]);
}

注意,它现在使重载无用,将代码移回被覆盖的doInBackground (String... params),并且您还需要确保当您调用execute()时,您提供两个字符串作为参数。

相关内容

  • 没有找到相关文章

最新更新