{"id":3360,"date":"2014-03-23T11:23:30","date_gmt":"2014-03-23T11:23:30","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/03\/23\/how-to-stop-jsonparser-makehttprequest-in-android-collection-of-common-programming-errors\/"},"modified":"2014-03-23T11:23:30","modified_gmt":"2014-03-23T11:23:30","slug":"how-to-stop-jsonparser-makehttprequest-in-android-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/03\/23\/how-to-stop-jsonparser-makehttprequest-in-android-collection-of-common-programming-errors\/","title":{"rendered":"how to stop jsonParser.makeHttpRequest in android-Collection of common programming errors"},"content":{"rendered":"<p>I crate app to check the database for login info by using jsonParser.makeHttpRequest I try to make my app to stop after 10 second in case there is no internet connection or no response from the server. The code work however when the login button click for the second time the app crash Could anyone please support why this happen<\/p>\n<p>please see the below for the code<\/p>\n<pre><code>    package com.example.pfms;\n\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n\n\nimport org.apache.http.NameValuePair;\nimport org.apache.http.conn.ConnectTimeoutException;\nimport org.apache.http.impl.client.DefaultHttpClient;\nimport org.apache.http.message.BasicNameValuePair;\nimport org.apache.http.params.BasicHttpParams;\nimport org.apache.http.params.HttpConnectionParams;\nimport org.apache.http.params.HttpParams;\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport android.content.SharedPreferences;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.os.Message;\nimport android.app.Activity;\nimport android.app.ListActivity;\n\nimport android.app.ProgressDialog;\nimport android.content.Intent;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.Button;\nimport android.widget.EditText;\nimport android.widget.ListView;\nimport android.widget.Toast;\n\n\npublic class MainActivity extends Activity {\n\n    private String id,pass,p,logincheck;\n    private EditText username,password;\n    private Button login;\n    private CheckLogin cl;\n    private ProgressDialog pDialog;\n    private SharedPreferences prefs;\n    JSONParser jsonParser = new JSONParser();\n    private static final String TAG_SUCCESS = \"success\";\n    private static final String TAG_PRODUCT = \"product\";\n    private static final String url = \"http:\/\/192.168.1.11\/pfm\/get_id.php\";\n\n\n    protected void onCreate(Bundle savedInstanceState) {\n\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.login);\n\n        cl= new CheckLogin();\n        username=(EditText)findViewById(R.id.editText1);\n        password=(EditText)findViewById(R.id.editText2);\n        login=(Button)findViewById(R.id.button1);\n        prefs = this.getSharedPreferences(\"com.example.pfms\", MODE_PRIVATE);\n        logincheck=prefs.getString(\"com.example.pfms.login\", \"0\");\n        if(!logincheck.equals(\"0\")){\n            Intent i=new Intent(MainActivity.this,TechOption.class);\n            Bundle info=new Bundle();\n            info.putString(\"techid\",logincheck);\n            i.putExtras(info);\n            startActivity(i);   \n        }\n\nlogin.setOnClickListener(new OnClickListener() {\n\n    @Override\n    public void onClick(View v) {\n\n        cl.execute(); \n\n    }\n});\n    }\n\n\n\n\n    class CheckLogin extends AsyncTask {\n\n        \/**\n         * Before starting background thread Show Progress Dialog\n         * *\/\n        @Override\n        protected void onPreExecute() {\n            super.onPreExecute();\n            pDialog = new ProgressDialog(MainActivity.this);\n            pDialog.setMessage(\"Checking Login info. Please wait...\");\n            pDialog.setIndeterminate(false);\n            pDialog.setCancelable(true);\n            pDialog.show();\n            p=\"0\";\n            pass=\"0\";\n            Log.d(\"test\", \"dialog\");\n        }\n\n        \/**\n         * Getting product details in background thread\n         * *\/\n\n        protected String doInBackground(String... params) {\n\n            \/\/ updating UI from Background Thread\n    \/\/      runOnUiThread(new Runnable() {\n    \/\/          public void run() {\n                    \/\/ Check for success tag\n                    int success;\n                    try {\n                        Log.d(\"test\", \"run\");\n                        \/\/ Building Parameters\n                        List params2 = new ArrayList();\n\n                        id=username.getText().toString();\n                        pass=password.getText().toString();\n                        params2.add(new BasicNameValuePair(\"id\",id));\n\n                        \/\/ getting product details by making HTTP request\n                        \/\/ Note that product details url will use GET request\n\n                \/\/      HttpParams httpParameters = new BasicHttpParams();\n                \/\/      HttpConnectionParams.setConnectionTimeout(httpParameters, 30000);\n                \/\/      HttpConnectionParams.setSoTimeout(httpParameters, 30000);\n                \/\/      DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);\n\n                        messageHandler.sendEmptyMessageDelayed(0, 10000);\n                        Log.d(\"test\", \"before\");\n                        JSONObject json = jsonParser.makeHttpRequest(\n                                url, \"GET\", params2);\n\n                        \/\/ check your log for json response\n                        Log.d(\"Single Product Details\", json.toString());\n\n                        \/\/ json success tag\n                        success = json.getInt(TAG_SUCCESS);\n                        Log.d(\"test\", \"before success\");\n                        if (success == 1) {\n                            \/\/ successfully received product details\n                            JSONArray actiondetail = json\n                                    .getJSONArray(TAG_PRODUCT); \/\/ JSON Array\n\n                            \/\/ get first product object from JSON Array\n\n\n\n                                JSONObject c = actiondetail.getJSONObject(0);\n\n                                \/\/ Storing each json item in variable\n                                p=\"\";\n\n                                 p = c.getString(\"pass\");\n                                Log.d(\"info\", \"p=\"+p);\n                                Log.d(\"info\", \"pass=\"+pass);\n\n\n\n\n\n                        }else{\n                            Toast.makeText(getBaseContext(), \"Wrong  Username\", Toast.LENGTH_LONG).show();\n\n                        }\n\n                        Log.d(\"test\", \"after success\");\n                    } catch (JSONException e) {\n                        \/\/pDialog.dismiss();\n                        \/\/Toast.makeText(getBaseContext(), \"Please check internet connection\", Toast.LENGTH_LONG).show();\n\n                        e.printStackTrace();\n                    }\n        \/\/      }\n    \/\/      });\n\n\n\n\n\n            return null;\n        }\n\n\n        \/**\n         * After completing background task Dismiss the progress dialog\n         * **\/\n\n        protected void onPostExecute(String file_url) {\n            \/\/ dismiss the dialog once got all details\n            pDialog.dismiss();\n            Log.d(\"test\", \"dismiss dailog\");\n            if(p.contentEquals(pass)){\n                Intent i=new Intent(MainActivity.this,TechOption.class);\n                Bundle info=new Bundle();\n                info.putString(\"techid\",id);\n                i.putExtras(info);\n                SharedPreferences.Editor editor = prefs.edit();\n                editor.putString(\"com.example.pfms.login\",id); \n                editor.commit();\n                startActivity(i);   \n            }\n            else{\n                Toast.makeText(getBaseContext(), \"Wrong  Password\", Toast.LENGTH_LONG).show();\n            }\n\n        }\n    }\n\n    private Handler messageHandler = new Handler() {\n\n        public void handleMessage(Message msg) {\n            super.handleMessage(msg);\n            pDialog.dismiss();\n            Toast.makeText(getBaseContext(), \"Please check internet connection\", Toast.LENGTH_LONG).show();\n            cl.cancel(true);\n\n        }\n    }; \n\n}\n<\/code><\/pre>\n<p>please see the below for Error :<\/p>\n<pre><code>11-05 09:37:09.053: D\/AndroidRuntime(1398): Shutting down VM\n11-05 09:37:09.053: W\/dalvikvm(1398): threadid=1: thread exiting with uncaught exception (group=0x41465700)\n11-05 09:37:09.123: E\/AndroidRuntime(1398): FATAL EXCEPTION: main\n11-05 09:37:09.123: E\/AndroidRuntime(1398): java.lang.IllegalStateException: Cannot execute task: the task is already running.\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:575)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.os.AsyncTask.execute(AsyncTask.java:534)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at com.example.pfms.MainActivity$2.onClick(MainActivity.java:79)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.view.View.performClick(View.java:4240)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.view.View$PerformClick.run(View.java:17721)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.os.Handler.handleCallback(Handler.java:730)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.os.Handler.dispatchMessage(Handler.java:92)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.os.Looper.loop(Looper.java:137)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at android.app.ActivityThread.main(ActivityThread.java:5103)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at java.lang.reflect.Method.invokeNative(Native Method)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at java.lang.reflect.Method.invoke(Method.java:525)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)\n11-05 09:37:09.123: E\/AndroidRuntime(1398):     at dalvik.system.NativeStart.main(Native Method)\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I crate app to check the database for login info by using jsonParser.makeHttpRequest I try to make my app to stop after 10 second in case there is no internet connection or no response from the server. The code work however when the login button click for the second time the app crash Could anyone [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3360","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/3360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=3360"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/3360\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=3360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=3360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=3360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}