我从链接下载了最新的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还不够成熟?
答案 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代码应该是:
<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;