How to send a JSON object over Request with Android? How to send a JSON object over Request with Android? json json

How to send a JSON object over Request with Android?


Sending a json object from Android is easy if you use Apache HTTP Client. Here's a code sample on how to do it. You should create a new thread for network activities so as not to lock up the UI thread.

    protected void sendJson(final String email, final String pwd) {        Thread t = new Thread() {            public void run() {                Looper.prepare(); //For Preparing Message Pool for the child Thread                HttpClient client = new DefaultHttpClient();                HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit                HttpResponse response;                JSONObject json = new JSONObject();                try {                    HttpPost post = new HttpPost(URL);                    json.put("email", email);                    json.put("password", pwd);                    StringEntity se = new StringEntity( json.toString());                      se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));                    post.setEntity(se);                    response = client.execute(post);                    /*Checking response */                    if(response!=null){                        InputStream in = response.getEntity().getContent(); //Get the data in the entity                    }                } catch(Exception e) {                    e.printStackTrace();                    createDialog("Error", "Cannot Estabilish Connection");                }                Looper.loop(); //Loop in the message queue            }        };        t.start();          }

You could also use Google Gson to send and retrieve JSON.


Android doesn't have special code for sending and receiving HTTP, you can use standard Java code. I'd recommend using the Apache HTTP client, which comes with Android. Here's a snippet of code I used to send an HTTP POST.

I don't understand what sending the object in a variable named "jason" has to do with anything. If you're not sure what exactly the server wants, consider writing a test program to send various strings to the server until you know what format it needs to be in.

int TIMEOUT_MILLISEC = 10000;  // = 10 secondsString postMessage="{}"; //HERE_YOUR_POST_STRING.HttpParams httpParams = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);HttpClient client = new DefaultHttpClient(httpParams);HttpPost request = new HttpPost(serverUrl);request.setEntity(new ByteArrayEntity(    postMessage.toString().getBytes("UTF8")));HttpResponse response = client.execute(request);


public void postData(String url,JSONObject obj) {    // Create a new HttpClient and Post Header    HttpParams myParams = new BasicHttpParams();    HttpConnectionParams.setConnectionTimeout(myParams, 10000);    HttpConnectionParams.setSoTimeout(myParams, 10000);    HttpClient httpclient = new DefaultHttpClient(myParams );    String json=obj.toString();    try {        HttpPost httppost = new HttpPost(url.toString());        httppost.setHeader("Content-type", "application/json");        StringEntity se = new StringEntity(obj.toString());         se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));        httppost.setEntity(se);         HttpResponse response = httpclient.execute(httppost);        String temp = EntityUtils.toString(response.getEntity());        Log.i("tag", temp);    } catch (ClientProtocolException e) {    } catch (IOException e) {    }}