http post - Android HttpPost Failure with working HttpGet -


i'm new in android programming , may missed obvious mistake there don't see right now.

the point pretty simple. have working httpget method , trying changed httppost method. didn't work out.

the interesting part "lasttweet" method. commented post-request, said, if i'm changing post app crashes.

so grateful if explain me did wrong. thank you.

import android.app.activity; import android.os.asynctask; import android.os.bundle; import android.widget.textview; import android.widget.toast;  import org.apache.http.httpentity; import org.apache.http.httpresponse; import org.apache.http.namevaluepair; import org.apache.http.client.clientprotocolexception; import org.apache.http.client.httpclient; import org.apache.http.client.entity.urlencodedformentity; import org.apache.http.client.methods.httpget; import org.apache.http.client.methods.httppost; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.message.basicnamevaluepair; import org.apache.http.protocol.http; import org.apache.http.util.entityutils; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject;  import java.io.ioexception; import java.util.arraylist; import java.util.list;  public class mainactivity extends activity {  textview text; httpclient client; jsonobject json;  final static string url = "http://www.openligadb.de/api/getmatchdata/bl1/2014/15";  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      text = (textview)findviewbyid(r.id.mytextview);     client = new defaulthttpclient();     new read().execute("matchid"); }  public jsonobject lasttweet(string username) throws clientprotocolexception, ioexception, jsonexception {     httpget = new httpget(url);     //httppost post = new httppost(url);      /*     list<namevaluepair> pairs = new arraylist<namevaluepair>();     pairs.add(new basicnamevaluepair("key1", "value1"));     pairs.add(new basicnamevaluepair("key2", "value2"));     post.setentity(new urlencodedformentity(pairs));     */      httpresponse r = client.execute(get);     //httpresponse r = client.execute(post);     int status = r.getstatusline().getstatuscode();      if (status == 200) {         httpentity e = r.getentity();         string data = entityutils.tostring(e);         jsonarray timeline = new jsonarray(data);         jsonobject last = timeline.getjsonobject(0);         return last;     }     else {         toast.maketext(mainactivity.this, "error", toast.length_long).show();         return null;     } }  public class read extends asynctask<string, integer, string>{      @override     protected string doinbackground(string... params) {         try {             json = lasttweet("wurst");             return json.getstring(params[0]);         } catch (clientprotocolexception e) {             e.printstacktrace();         } catch (ioexception e) {             e.printstacktrace();         } catch (jsonexception e) {             e.printstacktrace();         }          return null;     }      @override     protected void onpostexecute(string s) {         text.settext(s);     } } 

}

thanks quick response. asked greenapps logcat:

    local branch:     remote branch:     local patches:     reconstruct branch: 04-29 16:55:02.764    2642-2642/com.example.itsme.jsonnb2 d/openglrenderer﹕ enabling debug mode 0 04-29 16:55:04.116    2642-2855/com.example.itsme.jsonnb2 w/dalvikvm﹕ threadid=11: thread exiting uncaught exception (group=0x418a1da0) 04-29 16:55:04.146    2642-2855/com.example.itsme.jsonnb2 e/androidruntime﹕ fatal exception: asynctask #1     process: com.example.itsme.jsonnb2, pid: 2642     java.lang.runtimeexception: error occured while executing doinbackground()             @ android.os.asynctask$3.done(asynctask.java:300)             @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:355)             @ java.util.concurrent.futuretask.setexception(futuretask.java:222)             @ java.util.concurrent.futuretask.run(futuretask.java:242)             @ android.os.asynctask$serialexecutor$1.run(asynctask.java:231)             @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112)             @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587)             @ java.lang.thread.run(thread.java:841)      caused by: java.lang.runtimeexception: can't create handler inside thread has not called looper.prepare()             @ android.os.handler.<init>(handler.java:200)             @ android.os.handler.<init>(handler.java:114)             @ android.widget.toast$tn.<init>(toast.java:384)             @ android.widget.toast.<init>(toast.java:113)             @ android.widget.toast.maketext(toast.java:272)             @ com.example.itsme.jsonnb2.mainactivity.lasttweet(mainactivity.java:68)             @ com.example.itsme.jsonnb2.mainactivity$read.doinbackground(mainactivity.java:78)             @ com.example.itsme.jsonnb2.mainactivity$read.doinbackground(mainactivity.java:73)             @ android.os.asynctask$2.call(asynctask.java:288)             @ java.util.concurrent.futuretask.run(futuretask.java:237)             at android.os.asynctask$serialexecutor$1.run(asynctask.java:231)             at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112)             at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587)             at java.lang.thread.run(thread.java:841) 

in doinbackground cannot use toast(). using toast() in lasttweet() , hence in doinbackground. replace toast bij log.d(). can leave message in private string of asynctask , display string in onpostexecute in .. toast(). study logcat , see.

      json = lasttweet("wurst");       return json.getstring(params[0]); 

as lasttweet() can return null , hence json==null following statement json.getstring(params[0]); cause nullpointerexception. not execute statement when json==null.

change

     json = lasttweet("wurst");       if ( json == null )          return null;       return json.getstring(params[0]); 

in onpostexcute parameter s can null. check parameter null , display toast saying when null.