HTTP Client API level 11 or greater in Android -
i have restful web service implemented jersey. connect android via http client fetch data. works fine in api level 10 , older versions not on api level 11 or greater. appreciate help. have nullpointerexception in these versions.
public string getbaseuri(string str) { string result = ""; try { httpparams httpparameters = new basichttpparams(); int timeoutconnection = 3000; httpconnectionparams.setconnectiontimeout(httpparameters, timeoutconnection); int timeoutsocket = 5000; httpconnectionparams.setsotimeout(httpparameters, timeoutsocket); defaulthttpclient httpclient = new defaulthttpclient(httpparameters); httpget getrequest = new httpget(serveraddress + str); getrequest.addheader("accept", "application/json"); httpresponse response = httpclient.execute(getrequest); result = getresult(response).tostring(); httpclient.getconnectionmanager().shutdown(); } catch (exception e) { system.out.println(e.getmessage()); } return result; } private stringbuilder getresult(httpresponse response) throws illegalstateexception, ioexception { if (response.getstatusline().getstatuscode() != 201) throw new runtimeexception("failed : http error code : " + response.getstatusline().getstatuscode()); stringbuilder result = new stringbuilder(); bufferedreader br = new bufferedreader(new inputstreamreader((response.getentity().getcontent())), 1024); string output; while ((output = br.readline()) != null) result.append(output); return result; } tag : androidruntime
the logcat exception:
exception: fatal exception: main java.lang.nullpointerexception @ com.android.internal.os.loggingprintstream.prrintln(logiingprintstream.java.298) @ client.getbaseuri (client.java:66) when call rest service such as: string str = client.getbaseuri("task/project/get/" + user);
error.
private void listviewset() { listview lv = (listview) this.findviewbyid(r.id.listview); lv.setadapter(new multiadapter(this)); lv.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, int pos, long id) { switch (pos) { case add: string str = client.getbaseuri("task/project/get/" + user);// json format ...... } } }); }
are performing http request on separate thread (using asynctask, example)?
some of newer apis (especially ics, in experience) forcefully require perform network connections on separate thread not block ui thread. network connections can potentially long , expensive, never want perform them on ui thread. doing might prevent ui being drawn screen, cause application force close, make application appear laggy user, etc.
Comments
Post a Comment