android - Error parsing data org.json.JSONException: End of input at character 0 of when I run on real device -
i have created android application when run on real device crashes , in logcat:
05-20 17:32:50.251: e/sensormanager(20804): thread start 05-20 17:32:50.376: e/spannablestringbuilder(20804): span_exclusive_exclusive spans cannot have 0 length 05-20 17:32:50.376: e/spannablestringbuilder(20804): span_exclusive_exclusive spans cannot have 0 length 05-20 17:33:01.411: e/json parser(20804): error parsing data org.json.jsonexception: end of input @ character 0 of 05-20 17:33:01.416: e/androidruntime(20804): fatal exception: main 05-20 17:33:01.416: e/androidruntime(20804): java.lang.nullpointerexception 05-20 17:33:01.416: e/androidruntime(20804): @ com.mohammed.watzislam.loginactivity$1.onclick(loginactivity.java:62) 05-20 17:33:01.416: e/androidruntime(20804): @ android.view.view.performclick(view.java:4211) 05-20 17:33:01.416: e/androidruntime(20804): @ android.view.view$performclick.run(view.java:17267) 05-20 17:33:01.416: e/androidruntime(20804): @ android.os.handler.handlecallback(handler.java:615) 05-20 17:33:01.416: e/androidruntime(20804): @ android.os.handler.dispatchmessage(handler.java:92) 05-20 17:33:01.416: e/androidruntime(20804): @ android.os.looper.loop(looper.java:137) 05-20 17:33:01.416: e/androidruntime(20804): @ android.app.activitythread.main(activitythread.java:4898) 05-20 17:33:01.416: e/androidruntime(20804): @ java.lang.reflect.method.invokenative(native method) 05-20 17:33:01.416: e/androidruntime(20804): @ java.lang.reflect.method.invoke(method.java:511) 05-20 17:33:01.416: e/androidruntime(20804): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1006) 05-20 17:33:01.416: e/androidruntime(20804): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:773) 05-20 17:33:01.416: e/androidruntime(20804): @ dalvik.system.nativestart.main(native method) this json parser class use:
public class jsonparser { static inputstream = null; static jsonobject jobj = null; static string json = ""; // constructor public jsonparser() { super(); } public jsonobject getjsonfromurl(string url, list<namevaluepair> params) { // making http request try { // defaulthttpclient defaulthttpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(url); httppost.setentity(new urlencodedformentity(params)); httpresponse httpresponse = httpclient.execute(httppost); 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(); log.e("json", json); } 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; } } this user function (with web service addresses):
public class userfunctions { private jsonparser jsonparser; private static string loginurl = "http://my pc lan adress/android_login_api/include/db_functions"; private static string registerurl = "http://my pc lan adress/android_login_api/include/db_functions"; private static string login_tag = "login"; private static string register_tag = "register"; // constructor public userfunctions() { jsonparser = new jsonparser(); } /** * function make login request * @param email * @param password * */ public jsonobject loginuser(string email, string password) { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("tag", login_tag)); params.add(new basicnamevaluepair("email", email)); params.add(new basicnamevaluepair("password", password)); jsonobject json = jsonparser.getjsonfromurl(loginurl, params); // return json // log.e("json", json.tostring()); return json; } /** * function make reg. request * @param name * @param email * @param password * */ public jsonobject registeruser(string name, string password, string email) { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("tag", register_tag)); params.add(new basicnamevaluepair("name", name)); params.add(new basicnamevaluepair("email", email)); params.add(new basicnamevaluepair("password", password)); // getting json object jsonobject json = jsonparser.getjsonfromurl(registerurl, params); // return json return json; } /** * function login status * */ public boolean isuserloggedin(context context) { databasehandler db = new databasehandler(context); int count = db.getrowcount(); if (count > 0) { // user logged in return true; } return false; } /** * function logout user * reset database * */ public boolean logoutuser(context context) { databasehandler db = new databasehandler(context); db.resettables(); return true; } } this user login.java
package com.mohammed.watzislam; import java.util.hashmap; import org.json.jsonexception; import org.json.jsonobject; import com.mohammed.watzislam.library.databasehandler; import com.mohammed.watzislam.library.userfunctions; import android.app.activity; import android.content.intent; import android.os.bundle; import android.util.log; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class loginactivity extends activity { button btnlogin; button btnlinktoregister; edittext inputemail; edittext inputpassword; textview loginerrormsg; // json response node names private static string key_success = "success"; private static string key_error = "error"; private static string key_error_msg = "error_msg"; private static string key_uid = "id"; private static string key_name = "name"; private static string key_email = "email"; private static string key_created_at = "created_at"; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.login); // importing assets buttons, text fields inputemail = (edittext) findviewbyid(r.id.loginemail); inputpassword = (edittext) findviewbyid(r.id.loginpassword); btnlogin = (button) findviewbyid(r.id.btnlogin); btnlinktoregister = (button) findviewbyid(r.id.btnlinktoregisterscreen); loginerrormsg = (textview) findviewbyid(r.id.login_error); // login button click event btnlogin.setonclicklistener(new view.onclicklistener() { public void onclick(view view) { string email = inputemail.gettext().tostring(); string password = inputpassword.gettext().tostring(); userfunctions userfunction = new userfunctions(); log.d("button", "login"); jsonobject json = userfunction.loginuser(email, password); // check login response try { if (json.getstring(key_success) != null) { loginerrormsg.settext(""); string res = json.getstring(key_success); if(integer.parseint(res) == 1){ // user logged in // store user details in sqlite database databasehandler db = new databasehandler(getapplicationcontext()); jsonobject json_user = json.getjsonobject("user"); // launch dashboard screen intent applicationinterface = new intent(getapplicationcontext(), appinterface.class); // close views before launching dashboard applicationinterface.addflags(intent.flag_activity_clear_top); startactivity(applicationinterface); // close login screen finish(); }else{ // error in login loginerrormsg.settext("incorrect username/password"); } } } catch (jsonexception e) { e.printstacktrace(); } } }); // link register screen btnlinktoregister.setonclicklistener(new view.onclicklistener() { public void onclick(view view) { intent = new intent(getapplicationcontext(), registeractivity.class); startactivity(i); finish(); } }); } } and user register.java
package com.mohammed.watzislam; import org.json.jsonexception; import org.json.jsonobject; import com.mohammed.watzislam.library.databasehandler; import com.mohammed.watzislam.library.userfunctions; import android.app.activity; import android.content.intent; import android.os.bundle; import android.os.strictmode; import android.util.log; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class registeractivity extends activity { button btnregister; button btnlinktologin; edittext inputfullname; edittext inputemail; edittext inputpassword; textview registererrormsg; // json response node names private static string key_success = "success"; private static string key_error = "error"; private static string key_error_msg = "error_msg"; private static string key_uid = "id"; private static string key_name = "name"; private static string key_email = "email"; private static string key_created_at = "created_at"; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.register); /*strictmode.threadpolicy policy = new strictmode.threadpolicy.builder().permitall().build(); strictmode.setthreadpolicy(policy);*/ // importing assets buttons, text fields inputfullname = (edittext) findviewbyid(r.id.registername); inputemail = (edittext) findviewbyid(r.id.registeremail); inputpassword = (edittext) findviewbyid(r.id.registerpassword); btnregister = (button) findviewbyid(r.id.btnregister); btnlinktologin = (button) findviewbyid(r.id.btnlinktologinscreen); registererrormsg = (textview) findviewbyid(r.id.register_error); // register button click event btnregister.setonclicklistener(new view.onclicklistener() { public void onclick(view view) { string name = inputfullname.gettext().tostring(); string email = inputemail.gettext().tostring(); string password = inputpassword.gettext().tostring(); userfunctions userfunction = new userfunctions(); jsonobject json = userfunction.registeruser(name, email, password); // check login response try { if (json.getstring(key_success) != null) { registererrormsg.settext(""); string res = json.getstring(key_success); if(integer.parseint(res) == 1){ // user registred // store user details in sqlite database databasehandler db = new databasehandler(getapplicationcontext()); jsonobject json_user = json.getjsonobject("user"); // launch dashboard screen intent applicationinterface = new intent(getapplicationcontext(), appinterface.class); // close views before launching dashboard applicationinterface.addflags(intent.flag_activity_clear_top); startactivity(applicationinterface); // close registration screen finish(); }else{ // error in registration registererrormsg.settext("error occured in registration"); } } } catch (jsonexception e) { e.printstacktrace(); } } }); // link login screen btnlinktologin.setonclicklistener(new view.onclicklistener() { public void onclick(view view) { intent = new intent(getapplicationcontext(), loginactivity.class); startactivity(i); // close registration view finish(); } }); } } the web services implemented in php , running xammp server on local pc. basically, fetch data mysql database , provide user sign up/user login/ website functions.
the device connected internet through wifi pc "using connectify".
i have been struggling find answer haven't had success (i'm new developer , used lot of code internet, modifications). , appreciated.
Comments
Post a Comment