HTTP parameters support
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / servlet / httpserver / ServletHttpExchange.java
index f5e9c03945f4877c62f36369d264d75ed5bd1aea..85553f01cd9f1fd1be76a348d1d0a90c6434c15f 100644 (file)
@@ -5,9 +5,14 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
 import java.net.URI;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
 
 import javax.net.ssl.SSLSession;
 import javax.servlet.http.HttpServletRequest;
@@ -72,7 +77,17 @@ class ServletHttpExchange extends HttpsExchange {
 
        @Override
        public URI getRequestURI() {
-               return URI.create(httpServletRequest.getRequestURI());
+               // TODO properly deal with charset?
+               Charset encoding = StandardCharsets.UTF_8;
+               Map<String, String[]> parameters = httpServletRequest.getParameterMap();
+               StringJoiner sb = new StringJoiner("&");
+               for (String key : parameters.keySet()) {
+                       for (String value : parameters.get(key)) {
+                               String pair = URLEncoder.encode(key, encoding) + '=' + URLEncoder.encode(value, encoding);
+                               sb.add(pair);
+                       }
+               }
+               return URI.create(httpServletRequest.getRequestURI() + (sb.length() != 0 ? '?' + sb.toString() : ""));
        }
 
        @Override