在NanoHttpd中读取POST Ajax数组参数

时间:2016-01-23 12:28:05

标签: java ajax nanohttpd

我是NanoHttpd的新手。我正在将我的Java EE servlet代码转换为NanoHttpd以供嵌入式使用。请不要推荐像Jetty这样的其他嵌入式服务器,我特别想使用NanoHttpd。

我的jQuery Javascript代码如下所示:

$.ajax({
    type:'POST',
    url:'',
    traditional: true,
    data: {
       'prm1':'val2',
       'prm2':'val2',
       'array1':['array1','array2','array3']
    },
    success:function(result){},
    error:function(xhr,err,stat){}
});

在servlet上获取参数如下所示:

String serverval1 = request.getParameter("prm1"); //get single value
String serverval2 = request.getParameter("prm2"); //get single value  
String[] params = request.getParameterValues("array1"); //get array

在NanoHttpd上,我可以通过以下方式获取单个值:

String serverval1 = ihttpsession.getParms().get("prm1"); //get single value
String serverval2 = ihttpsession.getParms().get("prm2"); //get single value 
String[] params = ???

如何在NanoHttpd中获取数组参数?

1 个答案:

答案 0 :(得分:0)

我在看了几个NanoHttpd示例代码后想出来了,显然有很多方法可以获取请求参数

String serverval1 = ihttpsession.getParms().get("prm1"); //get single value
String serverval2 = ihttpsession.getParms().get("prm2"); //get single value

//get parameters as array (alternative method)
Map<String,List<String>>prms=decodeParameters(ihttpsession.getQueryParameterString());
String[] array = prms.get("array1").toArray(new String[prms.get("array1").size()]);

后一种方法也可以用于非数组参数,但显然在它们各自的List<String>对象中只包含一个值