title: Reading POST data from html form sent to serversocket
body: <p>i try to write simplest possible server app in Java, displaying html form with textarea input, which after submitting gives me possibility to parse xml typed in that textarea. For now i build simple serversocket based server like that:</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.net.ServerSocket;
  import java.net.Socket;
  
  public class WebServer {
  
    protected void start() {
      ServerSocket s;
      String gets = "";
      System.out.println("Start on port 80");
      try {
        // create the main server socket
        s = new ServerSocket(80);
      } catch (Exception e) {
        System.out.println("Error: " + e);
        return;
      }
  
      System.out.println("Waiting for connection");
      for (;;) {
        try {
          // wait for a connection
          Socket remote = s.accept();
          // remote is now the connected socket
          System.out.println("Connection, sending data.");
          BufferedReader in = new BufferedReader(new InputStreamReader(
              remote.getInputStream()));
          PrintWriter out = new PrintWriter(remote.getOutputStream());
  
          String str = ".";
  
          while (!str.equals("")) {
            str = in.readLine();
            if (str.contains("GET")){
              gets = str;
              break;
            }
          }
  
          out.println("HTTP/1.0 200 OK");
          out.println("Content-Type: text/html");
          out.println("");
          // Send the HTML page
          String method = "get";
          out.print("&lt;html&gt;&lt;form method="+method+"&gt;");
          out.print("&lt;textarea name=we&gt;&lt;/textarea&gt;&lt;/br&gt;");
          out.print("&lt;input type=text name=a&gt;&lt;input type=submit&gt;&lt;/form&gt;&lt;/html&gt;");
          out.println(gets);
          out.flush();
  
          remote.close();
        } catch (Exception e) {
          System.out.println("Error: " + e);
        }
      }
    }
  
    public static void main(String args[]) {
      WebServer ws = new WebServer();
      ws.start();
    }
  }
  </code></pre>
  
  <p>After form (textarea with xml and one additional text input) is submitted in 'gets' String-type variable I have Urlencoded values of my variables (also displayed on the screen, it looks like that:</p>
  
  <pre><code>gets = GET /?we=%3Cnetwork+ip_addr%3D%2210.0.0.0%2F8%22+save_ip%3D%22true%22%3E%0D%0A%3Csubnet+interf_used%3D%22200%22+name%3D%22lan1%22+%2F%3E%0D%0A%3Csubnet+interf_used%3D%22254%22+name%3D%22lan2%22+%2F%3E%0D%0A%3C%2Fnetwork%3E&amp;a=fooBar HTTP/1.1 
  </code></pre>
  
  <p>What can i do to change GET to POST method (if i simply change it in form and than put " if (str.contains("POST")){" it gives me string like </p>
  
  <pre><code>gets = POST / HTTP/1.1
  </code></pre>
  
  <p>with no variables. And after that, how i can use xml from my textarea field (called 'we')?</p>