php - Android JSON parsing exception -


hello working on login activity displays following error:

e/json parser(12505): error parsing data org.json.jsonexception: value <br of type java.lang.string cannot converted jsonobject 03-25 00:21:14.735: w/dalvikvm(12505): threadid=11: thread exiting uncaught exception (group=0x41d83700) 03-25 00:21:14.775: e/androidruntime(12505): fatal exception: asynctask #1 03-25 00:21:14.775: e/androidruntime(12505): java.lang.runtimeexception: error occured while executing doinbackground() 03-25 00:21:14.775: e/androidruntime(12505):    @ android.os.asynctask$3.done(asynctask.java:299) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:352) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.util.concurrent.futuretask.setexception(futuretask.java:219) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.util.concurrent.futuretask.run(futuretask.java:239) 03-25 00:21:14.775: e/androidruntime(12505):    @  android.os.asynctask$serialexecutor$1.run(asynctask.java:230) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1080) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:573) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.lang.thread.run(thread.java:841) 03-25 00:21:14.775: e/androidruntime(12505): caused by: java.lang.nullpointerexception 03-25 00:21:14.775: e/androidruntime(12505):    @ com.example.maphelperlogin.register$processregister.doinbackground(register.java:154) 03-25 00:21:14.775: e/androidruntime(12505):    @ com.example.maphelperlogin.register$processregister.doinbackground(register.java:1) 03-25 00:21:14.775: e/androidruntime(12505):    @ android.os.asynctask$2.call(asynctask.java:287) 03-25 00:21:14.775: e/androidruntime(12505):    @ java.util.concurrent.futuretask.run(futuretask.java:234) 03-25 00:21:14.775: e/androidruntime(12505):    ... 4 more 03-25 00:21:23.175: i/choreographer(12505): skipped 502 frames!  application may doing work on main thread. 03-25 00:21:23.725: e/windowmanager(12505): activity com.example.maphelperlogin.register has leaked window com.android.internal.policy.impl.phonewindow$decorview{42e12d30 v.e..... r......d 0,0-684,192} added here 03-25 00:21:23.725: e/windowmanager(12505): android.view.windowleaked: activity com.example.maphelperlogin.register has leaked window com.android.internal.policy.impl.phonewindow$decorview{42e12d30 v.e..... r......d 0,0-684,192} added here 03-25 00:21:23.725: e/windowmanager(12505):     @ android.view.viewrootimpl.<init>(viewrootimpl.java:452) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.view.windowmanagerglobal.addview(windowmanagerglobal.java:258) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:73) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.app.dialog.show(dialog.java:287) 03-25 00:21:23.725: e/windowmanager(12505):     @ com.example.maphelperlogin.register$processregister.onpreexecute(register.java:119) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.os.asynctask.executeonexecutor(asynctask.java:586) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.os.asynctask.execute(asynctask.java:534) 03-25 00:21:23.725: e/windowmanager(12505):     @ com.example.maphelperlogin.register$2.onclick(register.java:91) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.view.view.performclick(view.java:4475) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.view.view$performclick.run(view.java:18786) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.os.handler.handlecallback(handler.java:730) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.os.handler.dispatchmessage(handler.java:92) 03-25 00:21:23.725: e/windowmanager(12505):     @ android.os.looper.loop(looper.java:176) 03-25 00:21:23.725: e/windowmanager(12505):  @ android.app.activitythread.main(activitythread.java:5419) 03-25 00:21:23.725: e/windowmanager(12505):     @ java.lang.reflect.method.invokenative(native method) 03-25 00:21:23.725: e/windowmanager(12505):     @ java.lang.reflect.method.invoke(method.java:525) 03-25 00:21:23.725: e/windowmanager(12505):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1046) 03-25 00:21:23.725: e/windowmanager(12505):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:862) 03-25 00:21:23.725: e/windowmanager(12505):     @ dalvik.system.nativestart.main(native method) 

here parser class:

public class jsonparser {     static inputstream = null;     static jsonobject jobj = null;     static string json = "";      // constructor     public jsonparser() {      }      // function json url     // making http post or mehtod     public jsonobject makehttprequest(string url, string method,             list<namevaluepair> params) {          // making http request         try {              // check request method             if(method == "post"){                 // request method post                 // defaulthttpclient                 defaulthttpclient httpclient = new defaulthttpclient();                 httppost httppost = new httppost(url);                 //if add following therror gets removed receive message "missing required sets"                //httppost.setheader("content-type", "application/json");                                 httppost.setentity(new urlencodedformentity(params));                  httpresponse httpresponse = httpclient.execute(httppost);                 httpentity httpentity = httpresponse.getentity();                 = httpentity.getcontent();              }else if(method == "get"){                 // request method                 defaulthttpclient httpclient = new defaulthttpclient();                 string paramstring = urlencodedutils.format(params, "utf-8");                 url += "?" + paramstring;                 httpget httpget = new httpget(url);                  httpresponse httpresponse = httpclient.execute(httpget);                 httpentity httpentity = httpresponse.getentity();                 = httpentity.getcontent();             }                     } catch (unsupportedencodingexception e) {             e.printstacktrace();         } catch (clientprotocolexception e) {             e.printstacktrace();         } catch (ioexception e) {             e.printstacktrace();         }          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();             json = sb.tostring();         } catch (exception e) {             log.e("buffer error", "error converting result " + e.tostring());         }          // try parse string json object         try {             jobj = new jsonobject(json);         } catch (jsonexception e) {             log.e("json parser", "error parsing data " + e.tostring());         }          // return json string         return jobj;      } } 

and here register class extends asynctask:

class processregister extends asynctask<string, string, string> {          jsonobject json;           @override          protected void onpreexecute() {              super.onpreexecute();              pdialog = new progressdialog(register.this);              pdialog.setmessage("registering new user..");              pdialog.setindeterminate(false);              pdialog.setcancelable(true);              pdialog.show();          }            protected string doinbackground(string... arg0) {             // todo auto-generated method stub             int success;              string firstname= inputfirstname.gettext().tostring();             string lastname= inputlastname.gettext().tostring();             string username= inputusername.gettext().tostring();             string email= inputemail.gettext().tostring();             string pass= inputpassword.gettext().tostring();              // building parameters             list <namevaluepair> params = new arraylist <namevaluepair>();             params.add(new basicnamevaluepair("firstname", firstname));             params.add(new basicnamevaluepair("lastname", lastname));             params.add(new basicnamevaluepair("username", username));             params.add(new basicnamevaluepair("email", email));             params.add(new basicnamevaluepair("password", pass));              for(int i=0;i<params.size();i++){                 system.out.println("here: "+params.get(i).tostring());              }              // getting json object             // note create product url accepts post method             json = jsonparser.makehttprequest(url_register_user,"post", params);              //log.d("create response 1", json.tostring());              try{             success = json.getint(tag_success);             //log.d("create response 2", json.tostring());             string successu = success == 1 ? "success" : null;                  return successu;              } catch (jsonexception e) {                 e.printstacktrace();                 return null;             }         }         /**          * after completing background task dismiss progress dialog          * **/         protected void onpostexecute(string resp) {             // dismiss dialog once done             // check log cat fro response             if(resp != null){                     pdialog.dismiss();                     //log.d("create response", json.tostring());                      // created user                     intent = new intent(getapplicationcontext(), main.class);                     startactivity(i);                      // closing screen                     finish();                     // failed create user              }else{                      try {                         toast.maketext(getapplicationcontext(), "unsuccessful registration due "+json.getstring("message").tostring(), toast.length_short).show();                     } catch (jsonexception e) {                         // todo auto-generated catch block                         e.printstacktrace();                     }                 }                     pdialog.dismiss();                 }     } 

i have tried print or echo params element sending in processregister class , displayed in html format in logcat. thus, it not caught first if statement in php file. in fact, think php file error caused wrong json parsing. have seen several questions on same error no luck. can please assist me in solving issue. thank much.

edit: problem returned php error.

firstly never post android logcat output here on stackoverflow in quoted text format - has taken me long time format readable code block , until did, problem <br element wasn't visible.

secondly, you're getting server isn't pure json of it.

the exception...

e/json parser(12505): error parsing data org.json.jsonexception: value <br of type java.lang.string cannot converted jsonobject 

...is showing <br causing problem. html element suggests server returning json wrapped in html.

edit: thirdly, reason logcat showing windowleaked exceptions in doinbackground(...) method of asynctask...

        string firstname= inputfirstname.gettext().tostring();         string lastname= inputlastname.gettext().tostring();         string username= inputusername.gettext().tostring();         string email= inputemail.gettext().tostring();         string pass= inputpassword.gettext().tostring(); 

...don't try access ui elements in doinbackground(...) method. runs on separate thread , can't access ui elements on main (ui) thread.


Comments

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -