From: Mathieu Baudier Date: Mon, 27 Nov 2017 14:33:56 +0000 (+0100) Subject: Deal with x-www-form-urlencoded X-Git-Tag: argeo-slc-2.1.10~7 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=fe1e3bdf7fdcec20885b980b42a5230c58fdf339;p=gpl%2Fargeo-slc.git Deal with x-www-form-urlencoded --- diff --git a/org.argeo.slc.core/src/org/argeo/slc/core/execution/http/RunnerServlet.java b/org.argeo.slc.core/src/org/argeo/slc/core/execution/http/RunnerServlet.java index c467e0013..1823759c4 100644 --- a/org.argeo.slc.core/src/org/argeo/slc/core/execution/http/RunnerServlet.java +++ b/org.argeo.slc.core/src/org/argeo/slc/core/execution/http/RunnerServlet.java @@ -1,15 +1,21 @@ package org.argeo.slc.core.execution.http; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; import java.nio.channels.Channels; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.security.AccessControlContext; import java.security.PrivilegedAction; import java.util.Collection; import java.util.GregorianCalendar; +import java.util.Map; import java.util.UUID; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; @@ -46,6 +52,10 @@ import org.osgi.service.http.HttpContext; import org.osgi.service.http.HttpService; import org.osgi.util.tracker.ServiceTracker; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; + public class RunnerServlet extends HttpServlet { private final static Log log = LogFactory.getLog(RunnerServlet.class); @@ -68,6 +78,17 @@ public class RunnerServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + InputStream in; + // Deal with x-www-form-urlencoded + // FIXME make it more robust an generic + Map params = req.getParameterMap(); + if (params.size() != 0) { + String json = params.keySet().iterator().next(); + in = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); + } else { + in = req.getInputStream(); + } + // InputStream in = req.getInputStream(); // Gson gson = new Gson(); // JsonParser jsonParser = new JsonParser(); @@ -75,8 +96,13 @@ public class RunnerServlet extends HttpServlet { // Charset.forName("UTF-8"))); // JsonElement payload = jsonParser.parse(reader); // String payloadStr = gson.toJson(payload); + // + // log.debug(payloadStr); + // if (true) + // return; + String path = req.getPathInfo(); - InputStream in = req.getInputStream(); + // InputStream in = req.getInputStream(); OutputStream out = resp.getOutputStream(); String tokens[] = path.split("/");