X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Futil%2FParams.java;h=99320a50117fafc2bf8b9639f43edc67e802a944;hb=ca045757135b00baa1f9161d2fb1e2e9e4f2bb5e;hp=e2cff465138def3f5b6124f8efbe67d541bfaa48;hpb=efa9722bc37910a6224346bb20210205c96ecc47;p=jsvc.git diff --git a/src/dolda/jsvc/util/Params.java b/src/dolda/jsvc/util/Params.java index e2cff46..99320a5 100644 --- a/src/dolda/jsvc/util/Params.java +++ b/src/dolda/jsvc/util/Params.java @@ -81,7 +81,10 @@ public class Params { } public static MultiMap urlparams(URL url) { - return(urlparams(url.getQuery())); + String q = url.getQuery(); + if(q == null) + q = ""; + return(urlparams(q)); } public static MultiMap urlparams(Request req) { @@ -101,4 +104,35 @@ public class Params { } return(buf.toString()); } + + public static MultiMap postparams(Request req) { + if(req.method() != "POST") + return(null); + String clens = req.inheaders().get("Content-Length"); + if(clens == null) + return(null); + int clen; + try { + clen = Integer.parseInt(clens); + } catch(NumberFormatException e) { + return(null); + } + String ctype = req.inheaders().get("Content-Type"); + if(ctype == null) + return(null); + ctype = ctype.toLowerCase(); + if(ctype.equals("application/x-www-form-urlencoded")) { + if(clen > (1 << 20)) /* Just to be safe */ + return(null); + byte[] data; + try { + data = Misc.readall(req.input()); + } catch(IOException e) { + return(null); + } + String dec = new String(data, Misc.utf8); + return(urlparams(dec)); + } + return(null); + } }