Question

This is my MainActivity.I am using Json here.I know i have done something mistake in my string format.But i dont know where i have done mistake.from log cat i got"message": "myMessage1","myMessage2"] why there is only one closing bracket.i dont understand.

public class MainActivity extends Activity {
    TextView txtPostalCode;
    String content;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtPostalCode = (TextView) findViewById(R.id.t1);
        content = "{\"name\": \"myName\",\"message\": [\"myMessage1\",\"myMessage2\"],\"place\": \"myPlace\",\"date\": \"thisDate\"}";
        new ReadPlacesFeedTask().execute(content);

    }

    private class ReadPlacesFeedTask extends AsyncTask<String, Void, String> {
        protected String doInBackground(String... urls) {
            return new JsonParser().readJSONFeed(urls[0]);
        }

        protected void onPostExecute(String result) {
            try {
                JSONObject jsonObject = new JSONObject(result);
                JSONArray jarry = jsonObject.getJSONArray("message");
                for (int i = 0; i < jarry.length(); i++) {
                    JSONObject obj1 = jarry.getJSONObject(i);
                    Log.i("Name1:", "" + jsonObject.getString("myMessage1"));
                    Log.i("Name2:", "" + jsonObject.getString("myMessage2"));
                    Log.i("Name:", "" + jsonObject.getString("date"));

                }
                Log.i("Name111:", "" + jsonObject.getString("name"));
                Log.i("Name:12", "" + jsonObject.getString("place"));
                Log.i("Name:13", "" + jsonObject.getString("date"));

            } catch (Exception e) {
                Log.d("ReadPlacesFeedTask", e.getLocalizedMessage());
            }
        }
    }
}
02-09 15:07:21.242: E/AndroidRuntime(596): FATAL EXCEPTION: AsyncTask #1
02-09 15:07:21.242: E/AndroidRuntime(596): java.lang.RuntimeException: An error occured while executing doInBackground()
02-09 15:07:21.242: E/AndroidRuntime(596):    at android.os.AsyncTask$3.done(AsyncTask.java:200)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.lang.Thread.run(Thread.java:1096)
02-09 15:07:21.242: E/AndroidRuntime(596): Caused by: java.lang.IllegalArgumentException: Illegal character in scheme at index 0: {  "name": "myName",   "message": "myMessage1","myMessage2"],  "place": "myPlace",   "date": "thisDate" }
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.net.URI.create(URI.java:970)
02-09 15:07:21.242: E/AndroidRuntime(596):    at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
02-09 15:07:21.242: E/AndroidRuntime(596):    at com.example.webservice2.JsonParser.readJSONFeed(JsonParser.java:35)
02-09 15:07:21.242: E/AndroidRuntime(596):    at com.example.webservice2.MainActivity$ReadPlacesFeedTask.doInBackground(MainActivity.java:50)
02-09 15:07:21.242: E/AndroidRuntime(596):    at com.example.webservice2.MainActivity$ReadPlacesFeedTask.doInBackground(MainActivity.java:1)
02-09 15:07:21.242: E/AndroidRuntime(596):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
02-09 15:07:21.242: E/AndroidRuntime(596):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

No correct solution

OTHER TIPS

Well, I assume that your JsonParser::readJSONFeed method expects a URL as parameter but you're calling it with a JSON text as argument (urls[0] contains the content variable that you give to the task).

Try to replace

return new JsonParser().readJSONFeed(urls[0]);

by

return urls[0];

(in fact you don't need a task in that case)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top