user2386771
user2386771

Reputation: 177

sending json object to webservice in android

I am very newbie to android and trying to consume a .net weservice by sending a json object.

I am creating a json object and adding all the parameters to it like

 JSONObject json = new JSONObject();

   json.put("name","koli"); 
   json.put("email","[email protected]");

And calling the request in doInBackground method of AsyncTask class

String response = HttpClient.SendHttpPost(params[0],json);

This is how i am trying to making the request

public static String SendHttpPost(String URL, JSONObject jsonData) {

        Log.d("jsonData", ""+jsonData);
        StringBuilder stringBuilder = new StringBuilder();
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost httpPostRequest = new HttpPost(URL);
        httpPostRequest.setHeader("User-Agent", "com.altaver.android_PostJson2");
        httpPostRequest.setHeader("Accept", "application/json");
        httpPostRequest.setHeader("Content-Type", "application/json");
       StringEntity se = null;
        try {
            se = new StringEntity(jsonData.toString(),"UTF-8");

            se.setContentType("application/json");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        httpPostRequest.setEntity(se);
        HttpResponse response = null;
        try {
            response = client.execute(httpPostRequest);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block

            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

In the above method what does

StringEntity se = null;
            try {
                se = new StringEntity(jsonData.toString(),"UTF-8");

                se.setContentType("application/json");
            } catch (UnsupportedEncodingException e) {

this snippet will do.

and why i am not able to send my jsonobject?

Thanks:)

Upvotes: 1

Views: 3101

Answers (2)

shem
shem

Reputation: 4712

try chaging:

se = new StringEntity(jsonData.toString(),"UTF-8");

to this:

se = new StringEntity(jsonData.toString());

Upvotes: 1

Hariharan
Hariharan

Reputation: 24853

Try this.. in your doInBackground

JSONObject jObjOut = null;

                try {
                    HttpPost request = new HttpPost(url);
                    JSONObject returnedJObject;
                    returnedJObject = new JSONObject(JSONdata.toString());
                    JSONStringer json = new JSONStringer();
                    StringBuilder sb=new StringBuilder();


                    if (returnedJObject!=null)
                    {
                        Iterator<String> itKeys = returnedJObject.keys();
                        if(itKeys.hasNext())
                            json.object();
                        while (itKeys.hasNext())
                        {
                            String k=itKeys.next();
                            json.key(k).value(returnedJObject.get(k));
                            //Log.e("keys "+k,"value "+returnedJObject.get(k).toString());
                        }             
                    }
                   json.endObject();


                   StringEntity entity;

                   entity = new StringEntity(json.toString());

                   entity.setContentType("application/json;charset=UTF-8");
                  // entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
                   request.setHeader("Accept", "application/json");
                   request.setEntity(entity);

                   HttpResponse response =null;
                   DefaultHttpClient httpClient = new DefaultHttpClient();

                   HttpConnectionParams.setSoTimeout(httpClient.getParams(), 30000);
                   HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),50000);

                   response = httpClient.execute(request);

                   InputStream in;
                   in = response.getEntity().getContent();

                   BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                   String line = null;
                   while((line = reader.readLine()) != null){
                       sb.append(line);
                   }


                   return new JSONObject(sb.toString());  

Upvotes: 2

Related Questions