Android AsyncTask SoapObject Request Issue -
i want use .net web service in android app. send request web service using asynctask. request doesn't take value properly. used structure in many android apps , never got error this. problem?
i have permission(internet). namespace , method name true.
public class mainactivity extends activity { private static final string namespace = "http://tempuri.org/"; private static final string url = "http://service.melihmucuk.com/shoparws.asmx"; private string[][] items; private string[][] getallitems(){ soapobject request = new soapobject(namespace, "getallitem");//faulty line soapserializationenvelope envelope = new soapserializationenvelope(soapenvelope.ver11); envelope.dotnet = true; envelope.setoutputsoapobject(request); httptransportse androidhttptransport = new httptransportse(url); androidhttptransport.debug = true; try { androidhttptransport.call("http://tempuri.org/getallitem", envelope); soapobject response = (soapobject) envelope.getresponse(); items[0] = new string[response.getpropertycount()]; //item_id items[1] = new string[response.getpropertycount()]; //price items[2] = new string[response.getpropertycount()]; //title items[3] = new string[response.getpropertycount()]; //desc for(int i=0;i<response.getpropertycount();i++){ object property = response.getproperty(i); if(property instanceof soapobject){ soapobject item = (soapobject) property; string item_id = item.getproperty("item_id").tostring(); string price = item.getproperty("price").tostring(); string title = item.getproperty("title").tostring(); string desc = item.getproperty("desc").tostring(); items[0][i] = item_id; items[1][i] = price; items[2][i] = title; items[3][i] = desc; } } } catch (exception e) { e.printstacktrace(); } return items; } public class getallitemsas extends asynctask<string,string,string[][]>{ @override protected void onpreexecute() { } @override protected string[][] doinbackground(string... params) { getallitems(); return items; } protected void onpostexecute(string[][] items){ asfinish(); } } public void asfinish(){ listview liste = (listview)findviewbyid(r.id.listview1); listarrayadapter adapter = new listarrayadapter(mainactivity.this,items[0],items[1],items[2],items[3]); liste.setadapter(adapter); } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); items = new string[4][0]; new getallitemsas().execute(); } } my logcat
05-22 01:07:10.201: e/windowmanager(22337): activity com.zontul.shopar.mainactivity has leaked window com.android.internal.policy.impl.phonewindow$decorview@414ba3a0 added here 05-22 01:07:10.201: e/windowmanager(22337): android.view.windowleaked: activity com.zontul.shopar.mainactivity has leaked window com.android.internal.policy.impl.phonewindow$decorview@414ba3a0 added here 05-22 01:07:10.201: e/windowmanager(22337): @ android.view.viewrootimpl.<init>(viewrootimpl.java:464) 05-22 01:07:10.201: e/windowmanager(22337): @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:419) 05-22 01:07:10.201: e/windowmanager(22337): @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:351) 05-22 01:07:10.201: e/windowmanager(22337): @ android.view.windowmanagerimpl$compatmodewrapper.addview(windowmanagerimpl.java:171) 05-22 01:07:10.201: e/windowmanager(22337): @ android.view.window$localwindowmanager.addview(window.java:558) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.dialog.show(dialog.java:282) 05-22 01:07:10.201: e/windowmanager(22337): @ com.zontul.shopar.mainactivity$getallitemsas.onpreexecute(mainactivity.java:78) 05-22 01:07:10.201: e/windowmanager(22337): @ android.os.asynctask.executeonexecutor(asynctask.java:586) 05-22 01:07:10.201: e/windowmanager(22337): @ android.os.asynctask.execute(asynctask.java:534) 05-22 01:07:10.201: e/windowmanager(22337): @ com.zontul.shopar.mainactivity.oncreate(mainactivity.java:115) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.activity.performcreate(activity.java:5066) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1101) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.activitythread.performlaunchactivity(activitythread.java:2311) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2391) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.activitythread.access$600(activitythread.java:151) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.activitythread$h.handlemessage(activitythread.java:1335) 05-22 01:07:10.201: e/windowmanager(22337): @ android.os.handler.dispatchmessage(handler.java:99) 05-22 01:07:10.201: e/windowmanager(22337): @ android.os.looper.loop(looper.java:155) 05-22 01:07:10.201: e/windowmanager(22337): @ android.app.activitythread.main(activitythread.java:5520) 05-22 01:07:10.201: e/windowmanager(22337): @ java.lang.reflect.method.invokenative(native method) 05-22 01:07:10.201: e/windowmanager(22337): @ java.lang.reflect.method.invoke(method.java:511) 05-22 01:07:10.201: e/windowmanager(22337): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1029) 05-22 01:07:10.201: e/windowmanager(22337): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:796) 05-22 01:07:10.201: e/windowmanager(22337): @ dalvik.system.nativestart.main(native method) edit: i edited code , don't use dialog. please don't write answer dialog. problem doesn't occur dialog.
you need initialize progressdialog inside onpreexecute instead of @ class level:
private progressdialog dialog; //declare here @override protected void onpreexecute() { dialog = new progressdialog(mainactivity.this); //<< initialize here dialog.setmessage("loading..."); dialog.show(); } //..... protected void onpostexecute(string[][] items){ asfinish(); if(null !=dialog) if(dialog.isshowing()) dialog.dismiss(); }
Comments
Post a Comment