public class Background_confirmation extends AsyncTask<Void, Integer, String> { @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = ProgressDialog.show(Confirmation.this, "Please wait...", "Retrieving data ...", true); } @Override protected String doInBackground(Void... params) { try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://68.121.167.160/sip_chat_api/create_account.php?useralias=" + useralias + "&cntname=" + cntcode + ""); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { e.printStackTrace(); } if (backgroung_flag == 1) { } else { if (is != null) { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-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 void onPostExecute(String result) { super.onPostExecute(result); if (progressDialog.isShowing()) { progressDialog.dismiss();
Your code should change as above. Things You Should Consider
- Connectivity must be encoded inside
doInBackground() - If you want to get the result of
doInBackground() , you must accept it in onPostExecute() - This means that you must return the String value in
doInBackground() , where your third parameter of the AsyncTask class AsyncTask also be String (which is not in Wayne's answer)
In your code, you call an InputStream , which we do not see, except for the "else" part. If you use only InputStream , make sure the code always reaches the else part.
source share