title: Send a string to a servlet from android
body: <p>I am trying to send a string from a android application to a servlet and then retrieve that string to my android application ,but when i try to invoke the servlet it force close on me 
  and i dont know why (im very new to android and this is a practice exercise for me)
  here is my android simple app:</p>
  
  <p>ANDROID </p>
  
  <pre><code>package com.theopentutorials.android;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.net.HttpURLConnection;
  import java.net.URL;
  import java.net.URLConnection;
  import android.app.Activity;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.TextView;
  
  public class HttpGetServletActivity extends Activity implements OnClickListener { 
      Button button; 
      TextView outputText; 
      public static String request = "kjo ishte e gjitha"; 
      public static final String URL = ("http://10.0.2.2:8080/HttpGetServlet/HelloWorldServlet?param1=" + request); 
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          findViewsById();
          button.setOnClickListener(this);
      }
      private void findViewsById() { 
          button = (Button) findViewById(R.id.button);
          outputText = (TextView) findViewById(R.id.outputTxt);
      }
      public void onClick(View view) { 
          GetXMLTask task = new GetXMLTask();
          task.execute(new String[] { URL });
      }
      private class GetXMLTask extends AsyncTask&lt;String, Void, String&gt; {
          @Override
          protected String doInBackground(String... urls) {
              String output = null;
              for (String url : urls) {
                  output = getOutputFromUrl(url);
              }
              return output;
          }
          private String getOutputFromUrl(String url) {
              StringBuffer output = new StringBuffer("");
              try {
                  InputStream stream = getHttpConnection(url);
                  BufferedReader buffer = new BufferedReader(
                          new InputStreamReader(stream));
                  String s = "";
                  while ((s = buffer.readLine()) != null)
                      output.append(s);
              } catch (IOException e1) {
                  e1.printStackTrace();
              }
              return output.toString();
          }
  
          private InputStream getHttpConnection(String urlString)
                  throws IOException {
              InputStream stream = null;
              URL url = new URL(urlString);
              URLConnection connection = url.openConnection();
              try {
                  HttpURLConnection httpConnection = (HttpURLConnection) connection;
                  httpConnection.setRequestMethod("GET");
                  httpConnection.connect();
  
                  if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                      stream = httpConnection.getInputStream();
                  }
              } catch (Exception ex) {
                  ex.printStackTrace();
              }
              return stream;
          }
          @Override
          protected void onPostExecute(String output) {
              outputText.setText(output);
          }
      }
  }
  </code></pre>
  
  <p>and here is my simple servlet </p>
  
  <p>SERVLET</p>
  
  <pre><code>import java.io.IOException;
  import java.io.PrintWriter;
  import javax.servlet.ServletException;
  import javax.servlet.annotation.WebServlet;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  @WebServlet("/HelloWorldServlet")
  public class HelloWorldServlet extends HttpServlet {
      private static final long serialVersionUID = 1L;
  
      public HelloWorldServlet() {
          super();
      }
      protected void doGet(HttpServletRequest request,
              HttpServletResponse response)
              throws ServletException, IOException {
          String par1 =  request.getParameter("param1");
          PrintWriter out = response.getWriter();
          out.println(par1);
      }
  }
  </code></pre>
  
  <p>And the logcat log error says</p>
  
  <pre><code>01-10 13:36:50.014: E/AndroidRuntime(1187): FATAL EXCEPTION: AsyncTask #1
  01-10 13:36:50.014: E/AndroidRuntime(1187): java.lang.RuntimeException: An error occured while executing doInBackground()
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.lang.Thread.run(Thread.java:856)
  01-10 13:36:50.014: E/AndroidRuntime(1187): Caused by: java.lang.NullPointerException: lock == null
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.io.Reader.&lt;init&gt;(Reader.java:64)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.io.InputStreamReader.&lt;init&gt;(InputStreamReader.java:122)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.io.InputStreamReader.&lt;init&gt;(InputStreamReader.java:59)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at com.theopentutorials.android.HttpGetServletActivity$GetXMLTask.getOutputFromUrl(HttpGetServletActivity.java:64)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at com.theopentutorials.android.HttpGetServletActivity$GetXMLTask.doInBackground(HttpGetServletActivity.java:54)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at com.theopentutorials.android.HttpGetServletActivity$GetXMLTask.doInBackground(HttpGetServletActivity.java:1)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
  01-10 13:36:50.014: E/AndroidRuntime(1187):     ... 4 more
  </code></pre>
  
  <p>doest somebody have any idea ?
  Thank you for your help in advance !
  Have a nice day!</p>