I am trying to create a simple HttpServer in Java to handle GET requests, but when I try to get the GET parameters for a request I noticed the HttpExchange class does not have a method for that.
Does anybody know an easy way to read the GET parameters (query string)?
This is how my handler looks like:
public class TestHandler{
@Override
public void handle(HttpExchange exc) throws IOxception {
String response = "This is the reponse";
exc.sendResponseHeaders(200, response.length());
// need GET params here
OutputStream os = exc.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
.. and the main method:
public static void main(String[] args) throws Exception{
// create server on port 8000
InetSocketAddress address = new InetSocketAddress(8000);
HttpServer server = new HttpServer.create(address, 0);
// bind handler
server.createContext("/highscore", new TestHandler());
server.setExecutor(null);
server.start();
}
Building on the answer by @anon01, this is how to do it in Groovy:
And this is how to use it:
This answer, contrary to annon01's, properly decodes the keys and values. It does not use
String.split
, but scans the string usingindexOf
, which is faster.The following:
httpExchange.getRequestURI().getQuery()
will return string in format similar to this:
"field1=value1&field2=value2&field3=value3..."
so you could simply parse string yourself, this is how function for parsing could look like:
And this is how you could use it: