making a Get request from android throws exception? -
this question has answer here:
i'm trying access web api android app, have url , it's supposed return xml file. looked online , found code none of them works, can access url vm browser not application, , set necessary permissions accessing internet.
basic code:
public class mainactivity extends activity { private static final string url = "http://192.168.15.12/api/values/2"; protected static final string tag = null; httpresponse response3 = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); button btn = (button) findviewbyid(r.id.button1); btn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { log.i(tag, "2"); try { log.i(tag, "7"); log.i(tag, "9"); httpclient client = new defaulthttpclient(); httpget request = new httpget(); request.seturi(new uri(url)); response3 = client.execute(request); log.i(tag, "10"); } catch (unsupportedencodingexception e) { e.printstacktrace(); } catch (clientprotocolexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } catch (urisyntaxexception e) { // todo auto-generated catch block e.printstacktrace(); } // return xml log.i(tag, "00"); } }); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } }
exception:
05-21 14:34:51.462: i/(789): 2 05-21 14:34:51.462: i/(789): 7 05-21 14:34:51.462: i/(789): 9 05-21 14:34:51.552: d/androidruntime(789): shutting down vm 05-21 14:34:51.552: w/dalvikvm(789): threadid=1: thread exiting uncaught exception (group=0x40a71930) 05-21 14:34:51.613: e/androidruntime(789): fatal exception: main 05-21 14:34:51.613: e/androidruntime(789): android.os.networkonmainthreadexception 05-21 14:34:51.613: e/androidruntime(789): @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1117) 05-21 14:34:51.613: e/androidruntime(789): @ libcore.io.blockguardos.connect(blockguardos.java:84) 05-21 14:34:51.613: e/androidruntime(789): @ libcore.io.iobridge.connecterrno(iobridge.java:127) 05-21 14:34:51.613: e/androidruntime(789): @ libcore.io.iobridge.connect(iobridge.java:112) 05-21 14:34:51.613: e/androidruntime(789): @ java.net.plainsocketimpl.connect(plainsocketimpl.java:192) 05-21 14:34:51.613: e/androidruntime(789): @ java.net.plainsocketimpl.connect(plainsocketimpl.java:459) 05-21 14:34:51.613: e/androidruntime(789): @ java.net.socket.connect(socket.java:842) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.conn.scheme.plainsocketfactory.connectsocket(plainsocketfactory.java:119) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:144) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:360) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:487) 05-21 14:34:51.613: e/androidruntime(789): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:465) 05-21 14:34:51.613: e/androidruntime(789): @ com.example.sms4.mainactivity$1.onclick(mainactivity.java:70) 05-21 14:34:51.613: e/androidruntime(789): @ android.view.view.performclick(view.java:4204) 05-21 14:34:51.613: e/androidruntime(789): @ android.view.view$performclick.run(view.java:17355) 05-21 14:34:51.613: e/androidruntime(789): @ android.os.handler.handlecallback(handler.java:725) 05-21 14:34:51.613: e/androidruntime(789): @ android.os.handler.dispatchmessage(handler.java:92) 05-21 14:34:51.613: e/androidruntime(789): @ android.os.looper.loop(looper.java:137) 05-21 14:34:51.613: e/androidruntime(789): @ android.app.activitythread.main(activitythread.java:5041) 05-21 14:34:51.613: e/androidruntime(789): @ java.lang.reflect.method.invokenative(native method) 05-21 14:34:51.613: e/androidruntime(789): @ java.lang.reflect.method.invoke(method.java:511) 05-21 14:34:51.613: e/androidruntime(789): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) 05-21 14:34:51.613: e/androidruntime(789): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) 05-21 14:34:51.613: e/androidruntime(789): @ dalvik.system.nativestart.main(native method)
you performin http request ui thrad. that's forbidden since android 3.0+. perform request asynctask. here reference. blocking code has executed in different thread. http logic has executed inside doinbackground
method
Comments
Post a Comment