0

I m getting json exception.error is like:-

the code is like

package info.androidhive.tabsswipe;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import org.apache.http.NameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.app.ListActivity;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.graphics.drawable.Drawable;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.os.StrictMode;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;

    public class Party extends ListActivity {



        private ProgressDialog pDialog;

        // Creating JSON Parser object
        JSONParser jParser = new JSONParser();

        ArrayList<HashMap<String, String>> partyList;

        // url to get all products list
        private static String url = "http://192.168.1.6/politiciansnpolitics/appphp/parties.php" ;

        // JSON Node names
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_PARTY = "party";
        private static final String TAG_ID = "party_id";
        private static final String TAG_NAME = "party_name";


        // products JSONArray
        JSONArray party = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_party);


            Drawable rightArrow = getResources().getDrawable(R.drawable.worldmap2);


            // setting the opacity (alpha)
            rightArrow.setAlpha(100);
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
              .detectDiskReads().detectDiskWrites().detectNetwork() // StrictMode is most commonly used to catch accidental disk or network access on the application's main thread
              .penaltyLog().build());


            // Hashmap for ListView
            partyList = new ArrayList<HashMap<String, String>>();

            // Loading products in Background Thread
            new LoadParties().execute();

            // Get listview
            ListView lv = getListView();

            // on seleting single product
            // launching Edit Product Screen
            lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // getting values from selected ListItem
                    String party_id = ((TextView) view.findViewById(R.id.id)).getText().toString();

                    // Starting new intent
                    Intent in = new Intent(getApplicationContext(),Party_Desc.class);
                    // sending pid to next activity
                    in.putExtra(TAG_ID, party_id);

                    // starting new activity and expecting some response back
                    startActivityForResult(in, 100);
                }
            });

        }
        @Override
        public void onPause() {
        super.onPause();
           if(pDialog != null){
               pDialog.dismiss();
           }
        }

        // Response from Edit Product Activity
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            // if result code 100
            if (resultCode == 100) {
                // if result code 100 is received
                // means user edited/deleted product
                // reload this screen again
                Intent intent = getIntent();
                finish();
                startActivity(intent);
            }

        }

        /**
         * Background Async Task to Load all product by making HTTP Request
         * */
        class LoadParties extends AsyncTask<String, String, String> {

            /**
             * Before starting background thread Show Progress Dialog
             * */
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(Party.this);
                pDialog.setMessage("Loading parties. Please wait...");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }

            /**
             * getting All products from url
             * */
            protected String doInBackground(String... args) {
                // Building Parameters


                List<NameValuePair> params = new ArrayList<NameValuePair>();
                // getting JSON string from URL
                JSONObject json = jParser.makeHttpRequest(url, "GET", params);

                // Check your log cat for JSON reponse
                Log.d("All Products: ", json.toString());

                try {
                    // Checking for SUCCESS TAG
                    int success = json.getInt(TAG_SUCCESS);

                    if (success == 1) {
                        // products found
                        // Getting Array of Products
                        party = json.getJSONArray(TAG_PARTY);

                        // looping through All Products
                        for (int i = 0; i <party.length(); i++) {
                            JSONObject c = party.getJSONObject(i);

                            // Storing each json item in variable
                            String id = c.getString(TAG_ID);
                            String name = c.getString(TAG_NAME);

                            // creating new HashMap
                            HashMap<String, String> map = new HashMap<String, String>();

                            // adding each child node to HashMap <span class="vf7210h94y" id="vf7210h94y_22">key</span> => value
                            map.put(TAG_ID, id);
                            map.put(TAG_NAME, name);

                            // adding HashList to ArrayList
                            partyList.add(map);
                        }
                    } else {
                        // no products found
                        // Launch Add New product Activity
                        Intent i = new Intent(getApplicationContext(),TopRatedFragment.class);
                        // Closing all previous activities
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(i);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                return null;
            }

            /**
             * After completing background task Dismiss the progress dialog
             * **/
            protected void onPostExecute(String file_url) {

                // dismiss the dialog after getting all products
                pDialog.dismiss();
                // updating UI from Background Thread
                runOnUiThread(new Runnable() {
                    public void run() {
                        /**
                         * Updating parsed JSON data into ListView
                         * */
                        ListAdapter adapter = new SimpleAdapter( Party.this,partyList,R.layout.list_item, new String[] { TAG_ID,
                                        TAG_NAME},
                                new int[] { R.id.id, R.id.name });
                        // updating listview
                        setListAdapter(adapter);
                    }
                });

            }

        }
    }

Exception I am getting

02-22 10:25:16.911: E/JSON Parser(7827): Error parsing data org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject
    02-22 10:25:16.911: W/dalvikvm(7827): threadid=11: thread exiting with uncaught exception (group=0x41856438)
    02-22 10:25:16.921: E/AndroidRuntime(7827): FATAL EXCEPTION: AsyncTask #1
    02-22 10:25:16.921: E/AndroidRuntime(7827): java.lang.RuntimeException: An error occured while executing doInBackground()
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.lang.Thread.run(Thread.java:856)
    02-22 10:25:16.921: E/AndroidRuntime(7827): Caused by: java.lang.NullPointerException
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at info.androidhive.tabsswipe.Party$LoadParties.doInBackground(Party.java:150)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at info.androidhive.tabsswipe.Party$LoadParties.doInBackground(Party.java:1)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
    02-22 10:25:16.921: E/AndroidRuntime(7827):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

yesterday it was working fine..sudeenly it arising problem

4

1 回答 1

0

your getting a bad/null response from the api, Value  of type those weird characters are the first thing trying to get parsed and causing the error check your api results

于 2014-02-22T05:10:40.080 回答