title: android.os.NetworkOnMainThreadException . Need to use async task?
body: <p>I'm having a problem with my android login functionality, getting <code>android.os.NetworkOnMainThreadException</code></p>
  
  <p>I removed the password field just for now to test if just the username was being posted, I'm aware that this is a problem for android 3.2+.</p>
  
  <p>Here is my code: </p>
  
  <pre><code>package com.example.toknapp;
  
  import java.util.ArrayList;
  
  public class login2 extends Activity {
      EditText un;
      TextView error;
      Button ok;
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.login);
          un=(EditText)findViewById(R.id.et_un);
          ok=(Button)findViewById(R.id.btn_login);
          error=(TextView)findViewById(R.id.tv_error);
  
          ok.setOnClickListener(new View.OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
  
                  ArrayList&lt;NameValuePair&gt; postParameters = new ArrayList&lt;NameValuePair&gt;();
                  postParameters.add(new BasicNameValuePair("username", un.getText().toString()));
                  //String valid = "1";
                  String response = null;
                  try {
                      response = CustomHttpClient.executeHttpPost("http://tokn.me/android_merchant_login.php", postParameters);
                      String res=response.toString();
                     // res = res.trim();
                      res= res.replaceAll("\\s+","");                              
                      //error.setText(res);
  
                     if(res.equals("1"))
                          error.setText("Correct Username or Password");
                      else
                          error.setText("Sorry!! Incorrect Username or Password"); 
                  } catch (Exception e) {
                      un.setText(e.toString());
                  }
  
              }
          });
      }
  }
  
  
  package com.example.toknapp;
  
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.net.URI;
  import java.util.ArrayList;
  
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  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.conn.params.ConnManagerParams;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.params.HttpConnectionParams;
  import org.apache.http.params.HttpParams;
  
  public class CustomHttpClient {
      /** The time it takes for our client to timeout */
      public static final int HTTP_TIMEOUT = 30 * 1000; // milliseconds
  
      /** Single instance of our HttpClient */
      private static HttpClient mHttpClient;
  
      /**
       * Get our single instance of our HttpClient object.
       *
       * @return an HttpClient object with connection parameters set
       */
      private static HttpClient getHttpClient() {
          if (mHttpClient == null) {
              mHttpClient = new DefaultHttpClient();
              final HttpParams params = mHttpClient.getParams();
              HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
              HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
              ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
          }
          return mHttpClient;
      }
  
      /**
       * Performs an HTTP Post request to the specified url with the
       * specified parameters.
       *
       * @param url The web address to post the request to
       * @param postParameters The parameters to send via the request
       * @return The result of the request
       * @throws Exception
       */
      public static String executeHttpPost(String url, ArrayList&lt;NameValuePair&gt; postParameters) throws Exception {
          BufferedReader in = null;
          try {
              HttpClient client = getHttpClient();
              HttpPost request = new HttpPost(url);
              UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
              request.setEntity(formEntity);
              HttpResponse response = client.execute(request);
              in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
  
              StringBuffer sb = new StringBuffer("");
              String line = "";
              String NL = System.getProperty("line.separator");
              while ((line = in.readLine()) != null) {
                  sb.append(line + NL);
              }
              in.close();
  
              String result = sb.toString();
              return result;
          } finally {
              if (in != null) {
                  try {
                      in.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      }
  
      /**
       * Performs an HTTP GET request to the specified url.
       *
       * @param url The web address to post the request to
       * @return The result of the request
       * @throws Exception
       */
      public static String executeHttpGet(String url) throws Exception {
          BufferedReader in = null;
          try {
              HttpClient client = getHttpClient();
              HttpGet request = new HttpGet();
              request.setURI(new URI(url));
              HttpResponse response = client.execute(request);
              in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
  
              StringBuffer sb = new StringBuffer("");
              String line = "";
              String NL = System.getProperty("line.separator");
              while ((line = in.readLine()) != null) {
                  sb.append(line + NL);
              }
              in.close();
  
              String result = sb.toString();
              return result;
          } finally {
              if (in != null) {
                  try {
                      in.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      }
  }
  </code></pre>