X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ee%2Fsrc%2Forg%2Fargeo%2Fcms%2Fservlet%2Fhttpserver%2FServletHttpExchange.java;h=85553f01cd9f1fd1be76a348d1d0a90c6434c15f;hb=722dc6b20b15014e3d963bd09617ddfd9b63a89f;hp=5a29fbe8401ece3e9c209239b8eeb27fd1428251;hpb=81d9084e2c9fd9d33ca1d864171d28f9564647d8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ee/src/org/argeo/cms/servlet/httpserver/ServletHttpExchange.java b/org.argeo.cms.ee/src/org/argeo/cms/servlet/httpserver/ServletHttpExchange.java index 5a29fbe84..85553f01c 100644 --- a/org.argeo.cms.ee/src/org/argeo/cms/servlet/httpserver/ServletHttpExchange.java +++ b/org.argeo.cms.ee/src/org/argeo/cms/servlet/httpserver/ServletHttpExchange.java @@ -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; @@ -18,7 +23,8 @@ import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpPrincipal; import com.sun.net.httpserver.HttpsExchange; -public class ServletHttpExchange extends HttpsExchange { +/** Integrates {@link HttpsExchange} in a servlet container. */ +class ServletHttpExchange extends HttpsExchange { private final HttpContext httpContext; private final HttpServletRequest httpServletRequest; private final HttpServletResponse httpServletResponse; @@ -71,7 +77,17 @@ public class ServletHttpExchange extends HttpsExchange { @Override public URI getRequestURI() { - return URI.create(httpServletRequest.getRequestURI()); + // TODO properly deal with charset? + Charset encoding = StandardCharsets.UTF_8; + Map 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