NanoHTTPD无法处理POST参数

时间:2015-06-21 15:46:40

标签: java nanohttpd

我从链接下载了最新的NanoHTTPD: https://raw.githubusercontent.com/NanoHttpd/nanohttpd/master/core/src/main/java/fi/iki/elonen/NanoHTTPD.java

处理非常基本的POST示例时,调用session.getParms()会返回空映射。我的代码是:

@Override
public Response serve(IHTTPSession session) {
    System.out.println( session.getMethod() + " " + session.getParms() );
    return newFixedLengthResponse("Some response.");
}

返回:

{}

触发nanoHTTPD的HTML代码是:

<html>
<body>
<form action="http://localhost:3388" method="POST">
    <input type="text" name="username" value="a" />
    <input type="submit" />
</form>

</body>
</html>

一切看起来都不错。您是否在我的代码中看到任何可疑内容,或者只是nanoHTTPD还不够成熟?

2 个答案:

答案 0 :(得分:6)

在处理POST请求时,应该在获取参数之前执行parseBody。

在您的代码中,就像这样:

@Override
public Response serve(IHTTPSession session) {
    session.parseBody(new HashMap<String, String>());
    System.out.println( session.getMethod() + " " + session.getParms() );
    return newFixedLengthResponse("Some response.");
}

答案 1 :(得分:0)

只有在您上传一个或多个文件时才需要

session.parseBody()。您的代码很好,除非您必须提供enctype =&#34; multipart / form-data&#34;在你的HTML表单标签中。所以你的HTML代码应该是:

&#13;
&#13;
<html>
<body>
<form action="http://localhost:3388" enctype="multipart/form-data" method="POST">
    <input type="text" name="username" value="a" />
    <input type="submit" />
</form>

</body>
</html>
&#13;
&#13;
&#13;