title: Android: Sending data from Android to server using JSON-Object & HttpClient
body: <p>I am trying to send data to Gsoap server using JSON object using android 4.0.3. I was run into a NetworkOnMainThread Exception with my android app. Then I have used network access is in an AsyncTask, so I don't see the point in this Exception anyway. But now I am getting Nullpointer Exception. I have posted code with error logcat. 
  I have already google dint get proper solution. So please anyone say me where I am going wrong. I am trying first time with JSON to send data.... I can send data to server without using JSON.. but need to send with JSON..</p>
  
  <p>it crashing at this line <strong>doInBack = (DownloadWebPageTask) doInBack.execute(new String[] { "192.168.1.40" });</strong></p>
  
  <p>Here is my code.. 
  MainAcitivty i.e AndroidJSONParsingActivity</p>
  
  <pre><code> public class AndroidJSONParsingActivity extends ListActivity {
  
  // url to make request
  // private static String url = "http://192.168.1.40";
  
  // JSON Node names
  private static final String TAG_CONTACTS = "contacts";
  private static final String TAG_ID = "id";
  private static final String TAG_NAME = "name";
  private static final String TAG_EMAIL = "email";
  private static final String TAG_ADDRESS = "address";
  private static final String TAG_GENDER = "gender";
  private static final String TAG_PHONE = "phone";
  private static final String TAG_PHONE_MOBILE = "mobile";
  private static final String TAG_PHONE_HOME = "home";
  private static final String TAG_PHONE_OFFICE = "office";
  
  // contacts JSONArray
  JSONArray contacts = null;
  
  private AsyncTask&lt;String, Void, String&gt; doInBack;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      // Hashmap for ListView
      ArrayList&lt;HashMap&lt;String, String&gt;&gt; contactList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
      // Creating JSON Parser instance
      JSONParser jParser = new JSONParser();
  
      doInBack = (DownloadWebPageTask) doInBack
              .execute(new String[] { "http://192.168.1.40" });
      // getting JSON string from URL
      JSONObject json = jParser.getJSONFromUrl(doInBack);
  
      try {
          // Getting Array of Contacts
          contacts = json.getJSONArray(TAG_CONTACTS);
  
          // looping through All Contacts
          for (int i = 0; i &lt; contacts.length(); i++) {
              JSONObject c = contacts.getJSONObject(i);
  
              // Storing each json item in variable
              String id = c.getString(TAG_ID);
              String name = c.getString(TAG_NAME);
              String email = c.getString(TAG_EMAIL);
              String address = c.getString(TAG_ADDRESS);
              String gender = c.getString(TAG_GENDER);
  
              // Phone number is agin JSON Object
              JSONObject phone = c.getJSONObject(TAG_PHONE);
              String mobile = phone.getString(TAG_PHONE_MOBILE);
              String home = phone.getString(TAG_PHONE_HOME);
              String office = phone.getString(TAG_PHONE_OFFICE);
  
              // creating new HashMap
              HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
  
              // adding each child node to HashMap key =&gt; value
              map.put(TAG_ID, id);
              map.put(TAG_NAME, name);
              map.put(TAG_EMAIL, email);
              map.put(TAG_PHONE_MOBILE, mobile);
  
              // adding HashList to ArrayList
              contactList.add(map);
          }
      } catch (JSONException e) {
          e.printStackTrace();
          System.out.println("JsonException--- " + e.getMessage());
      }
  
      /**
       * Updating parsed JSON data into ListView
       * */
      ListAdapter adapter = new SimpleAdapter(this, contactList,
              R.layout.list_item, new String[] { TAG_NAME, TAG_EMAIL,
                      TAG_PHONE_MOBILE }, new int[] { R.id.name, R.id.email,
                      R.id.mobile });
  
      setListAdapter(adapter);
  
      // selecting single ListView item
      ListView lv = getListView();
  
      // Launching new screen on Selecting Single ListItem
      lv.setOnItemClickListener(new OnItemClickListener() {
  
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                  int position, long id) {
              // getting values from selected ListItem
              String name = ((TextView) view.findViewById(R.id.name))
                      .getText().toString();
              String cost = ((TextView) view.findViewById(R.id.email))
                      .getText().toString();
              String description = ((TextView) view.findViewById(R.id.mobile))
                      .getText().toString();
  
              // Starting new intent
              Intent in = new Intent(getApplicationContext(),
                      SingleMenuItemActivity.class);
              in.putExtra(TAG_NAME, name);
              in.putExtra(TAG_EMAIL, cost);
              in.putExtra(TAG_PHONE_MOBILE, description);
              startActivity(in);
  
          }
      });
  
  }
  
  private class DownloadWebPageTask extends AsyncTask&lt;String, Void, String&gt; {
      @Override
      protected String doInBackground(String... urls) {
          String response = "";
          for (String url : urls) {
              DefaultHttpClient client = new DefaultHttpClient();
              HttpPost httppost = new HttpPost(url);
              try {
                  HttpResponse execute = client.execute(httppost);
                  InputStream content = execute.getEntity().getContent();
  
                  BufferedReader buffer = new BufferedReader(
                          new InputStreamReader(content));
                  String s = "";
                  while ((s = buffer.readLine()) != null) {
                      response += s;
                  }
  
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
          return response;
      }
  
      @Override
      protected void onPostExecute(String result) {
  
      }
  }
  
  }
  </code></pre>
  
  <p>JsonParser.java class</p>
  
  <pre><code>public class JSONParser {
  
  static InputStream is = null;
  static JSONObject jObj = null;
  static String json = "";
  
  // constructor
  public JSONParser() {
  
  }
  
  public JSONObject getJSONFromUrl(String url) {
  
      // Making HTTP request
      try {
          // defaultHttpClient
          DefaultHttpClient httpClient = new DefaultHttpClient();
          HttpPost httpPost = new HttpPost(url);
  
          HttpResponse httpResponse = httpClient.execute(httpPost);
          HttpEntity httpEntity = httpResponse.getEntity();
          is = httpEntity.getContent();
  
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      } catch (ClientProtocolException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
  
      try {
          BufferedReader reader = new BufferedReader(new InputStreamReader(
                  is, "iso-8859-1"), 8);
          StringBuilder sb = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null) {
              sb.append(line + "\n");
          }
          is.close();
          json = sb.toString();
      } catch (Exception e) {
          Log.e("Buffer Error", "Error converting result " + e.toString());
      }
  
      // try parse the string to a JSON object
      try {
          jObj = new JSONObject(json);
      } catch (JSONException e) {
          Log.e("JSON Parser", "Error parsing data " + e.toString());
      }
  
      // return JSON String
      return jObj;
  
  }
  
  public JSONObject getJSONFromUrl(AsyncTask&lt;String, Void, String&gt; doInBack) {
      // TODO Auto-generated method stub
      return null;
  }
  }
  </code></pre>
  
  <p>SingleMenuItemActivity.java class</p>
  
  <pre><code>public class SingleMenuItemActivity  extends Activity {
  
  // JSON node keys
  private static final String TAG_NAME = "name";
  private static final String TAG_EMAIL = "email";
  private static final String TAG_PHONE_MOBILE = "mobile";
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.single_list_item);
  
      // getting intent data
      Intent in = getIntent();
  
      // Get JSON values from previous intent
      String name = in.getStringExtra(TAG_NAME);
      String cost = in.getStringExtra(TAG_EMAIL);
      String description = in.getStringExtra(TAG_PHONE_MOBILE);
  
      // Displaying all values on the screen
      TextView lblName = (TextView) findViewById(R.id.name_label);
      TextView lblCost = (TextView) findViewById(R.id.email_label);
      TextView lblDesc = (TextView) findViewById(R.id.mobile_label);
  
      lblName.setText(name);
      lblCost.setText(cost);
      lblDesc.setText(description);
  }
  }
  </code></pre>
  
  <p>my logcat error report</p>
  
  <pre><code> 06-08 17:46:55.459: E/AndroidRuntime(2542): java.lang.RuntimeException: Unable to start activity           ComponentInfo{com.androidhive.jsonparsing/com.androidhive.jsonparsing.AndroidJSONParsingAct ivity}: java.lang.NullPointerException
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.os.Handler.dispatchMessage(Handler.java:99)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.os.Looper.loop(Looper.java:137)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.ActivityThread.main(ActivityThread.java:4424)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at java.lang.reflect.Method.invokeNative(Native Method)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at java.lang.reflect.Method.invoke(Method.java:511)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at dalvik.system.NativeStart.main(Native Method)
   06-08 17:46:55.459: E/AndroidRuntime(2542): Caused by: java.lang.NullPointerException
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at com.androidhive.jsonparsing.AndroidJSONParsingActivity.onCreate(AndroidJSONParsingActivity.java:62)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.Activity.performCreate(Activity.java:4465)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
   06-08 17:46:55.459: E/AndroidRuntime(2542):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
  </code></pre>
  
  <p>Many Thanks..</p>