asp.net web api - Calling Api Crashes Android Application -
here code of application want call api application. web api , have written self link projectbuddy-1.apphb.com/api/signin?email=ali@yahoo.com&pass=123 code want user's data , parse , send next activity using intent
package com.example.ali.projectbuddy; import android.app.activity; import android.app.dialog; import android.content.intent; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; import android.widget.edittext; import android.database.cursor; import android.widget.toast; import android.app.activity; import android.content.intent; import android.net.connectivitymanager; import android.net.networkinfo; import android.os.asynctask; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.expandablelistview; import android.widget.textview; import android.widget.toast; import java.util.arraylist; import java.util.hashmap; import java.util.list; import org.json.jsonarray; import org.json.jsonobject; import android.media.image; public class signin extends activity { string data = null; string url; database.user user = null; button login=null; boolean verified=false; string id = null; string pass=null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_sign_in); toast.maketext(com.example.ali.projectbuddy.signin.this,"hi",toast.length_long).show(); // refferences of views } public void loginclicked(view v) { boolean isconnected = isnetworkavailable(); if(isconnected == true) { toast.maketext(getapplicationcontext() , "is connected" ,toast.length_short).show(); edittext edittextusername = (edittext) findviewbyid(r.id.email); edittext edittextpassword = (edittext) findviewbyid(r.id.password); // user name , password id = edittextusername.gettext().tostring(); pass = edittextpassword.gettext().tostring(); string id1; string pass1; id1=id; pass1=pass; if(id1.isempty() && pass1.isempty()) { toast.maketext(getapplicationcontext() , "please enter username , password" ,toast.length_short).show(); } else if(id1.isempty()) { toast.maketext(getapplicationcontext() , "please enter username" ,toast.length_short).show(); } else if(pass1.isempty()) { toast.maketext(getapplicationcontext() , "please enter password" ,toast.length_short).show(); } else { toast.maketext(getapplicationcontext() , "calling api" ,toast.length_short).show(); url = "http://projectbuddy-1.apphb.com/api/signin?email=ali@yahoo.com&pass=123"; myasynchtask task=new myasynchtask(); task.execute(); } } else { toast.maketext(getapplicationcontext() , "no network connection, please try again." ,toast.length_long).show(); } } public boolean isnetworkavailable() { connectivitymanager connectivitymanager = (connectivitymanager) getsystemservice(getapplicationcontext().connectivity_service); networkinfo activenetworkinfo = connectivitymanager.getactivenetworkinfo(); return activenetworkinfo != null && activenetworkinfo.isconnected(); } public class myasynchtask extends asynctask<void, void, void> { @override protected void onpreexecute() { toast.maketext(getapplicationcontext() , "on preexecute" ,toast.length_short).show(); super.onpreexecute(); } @override protected void doinbackground(void... void0) { try { servicehandler obj = new servicehandler(); data = obj.makeservicecall(url, servicehandler.get); } catch (exception e) { data = "unable locate server."; } try { toast.maketext(getapplicationcontext() , "getting json onject" ,toast.length_short).show(); jsonobject object = new jsonobject(data); user.name = object.getstring("name"); user.country = object.getstring("country"); user.city = object.getstring("city"); user.id = object.getint("user_id"); user.mobileno = object.getstring("mobileno"); // user.image=(image)object.get("image"); } catch (exception ex) { } return null; } @override protected void onpostexecute(void abc) { super.onpostexecute(abc); if(user.equals(null)) { verified=false; toast.maketext(getapplicationcontext(), "username or password incorrect", toast.length_long).show(); } else if(data.contains("unable locate server")) { verified=false; toast.maketext(getapplicationcontext(), "unable locate server.check internet connection.", toast.length_long).show(); } else { // editor editor = sharedpreferences.edit(); verified=true; intent = new intent(getapplicationcontext(),welcome_page.class); i.putextra("username",user.name); i.putextra("useremail",user.email); i.putextra("userid",user.id); i.putextra("usermobileno",user.mobileno); i.putextra("usercountry",user.country); i.putextra("usercity",user.city); i.putextra("verified",verified); startactivity(i); } } } @override protected void ondestroy() { // todo auto-generated method stub super.ondestroy(); } /* public void signinclick2(view v) { // toast.maketext(com.example.ali.projectbuddy.signin.this,"hi3",toast.length_long).show(); intent = new intent(signin.this,welcome_page.class); i.putextra("username",user.name); i.putextra("useremail",user.email); i.putextra("userid",user.id); i.putextra("usermobileno",user.mobileno); i.putextra("usercountry",user.country); i.putextra("usercity",user.city); startactivity(i); }*/ public void signupclick(view v) { intent = new intent(this, signup.class); startactivity(i); } } this xml
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/material_blue_grey_800" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="com.example.ali.projectbuddy..login" > <gridlayout android:layout_width="fill_parent" android:layout_height="300px" android:layout_alignparentstart="true" android:id="@+id/gridlayout"> <imageview android:layout_width="96dp" android:layout_height="143dp" android:id="@+id/imageview" android:layout_row="0" android:layout_column="0" android:background="@drawable/icon1"/> <textview android:text="@string/project" android:textsize="18pt" android:textalignment="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textcolor="#73e0f4" style="@style/base.textappearance.appcompat.title" android:background="@color/material_blue_grey_800" android:id="@+id/textview" android:layout_alignparenttop="true" android:layout_alignparentend="true" android:layout_row="0" android:layout_column="8" /> </gridlayout> <edittext android:id="@+id/email" android:layout_width="match_parent" android:layout_height="32dp" android:layout_centerhorizontal="true" android:layout_margintop="200dp" android:textsize="22dp" android:textcolor="#ffffff" android:background="#07000000" android:ems="10" android:hint="email" android:inputtype="textemailaddress" > <requestfocus /> </edittext> <edittext android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_below="@id/email" android:layout_margintop="27dp" android:ems="10" android:textsize="22dp" android:textcolor="#ffffff" android:background="#07000000" android:hint="password" android:inputtype="textwebpassword" /> <textview android:id="@+id/forgetpassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textcolor="#ffffff" android:text="forgetpassword" android:textsize="22dp" android:onclick="forgetpasswordclick" android:layout_below="@+id/signup" android:layout_alignparentstart="true" android:layout_margintop="10dp" /> <textview android:id="@+id/signup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="new user? want signup?" android:textsize="22dp" android:onclick="signupclick" android:layout_margintop="40dp" android:textcolor="#ffffff" android:layout_below="@+id/password" android:layout_alignparentstart="true" /> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="new button" android:id="@+id/button" android:clickable="true" android:layout_alignparentbottom="true" android:layout_alignend="@+id/password" /> </relativelayout> please help. thank logcat shows 06-01 00:02:23.717 3714-3714/com.example.ali.projectbuddy e/androidruntime﹕ fatal exception: main java.lang.nullpointerexception @ com.example.ali.projectbuddy.signin$myasynchtask.onpostexecute(signin.java:162) @ com.example.ali.projectbuddy.signin$myasynchtask.onpostexecute(signin.java:117) @ android.os.asynctask.finish(asynctask.java:631) @ android.os.asynctask.access$600(asynctask.java:177) @ android.os.asynctask$internalhandler.handlemessage(asynctask.java:644) @ android.os.handler.dispatchmessage(handler.java:107) @ android.os.looper.loop(looper.java:194) @ android.app.activitythread.main(activitythread.java:5371) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:525) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:833) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:600) @ dalvik.system.nativestart.main(native method)
there area few erros: if user null throw nullpoinerexception
user.equals(null)
check
user == null
instead if data null throw nullpoinerexception
(data.contains("unable locate server"))
check if null before invoking methods on object. in addition suggest read asynctask because need check whether activity still active. also, suggested not use applicationcontext on app, may cause leaks.
Comments
Post a Comment