首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NanoHTTPD无法处理POST参数

NanoHTTPD无法处理POST参数
EN

Stack Overflow用户
提问于 2015-06-21 23:46:40
回答 2查看 3K关注 0票数 1

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

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

代码语言:javascript
复制
@Override
public Response serve(IHTTPSession session) {
    System.out.println( session.getMethod() + " " + session.getParms() );
    return newFixedLengthResponse("Some response.");
}

它返回:

代码语言:javascript
复制
{}

触发nanoHTTPD的代码是:

代码语言:javascript
复制
<html>
<body>
<form action="http://localhost:3388" method="POST">
    <input type="text" name="username" value="a" />
    <input type="submit" />
</form>

</body>
</html>

这一切看起来都不错。你是否在我的代码中看到了什么可疑的东西,或者仅仅是nanoHTTPD还不够成熟?

EN

回答 2

Stack Overflow用户

发布于 2016-01-04 14:10:26

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

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

代码语言:javascript
复制
@Override
public Response serve(IHTTPSession session) {
    session.parseBody(new HashMap<String, String>());
    System.out.println( session.getMethod() + " " + session.getParms() );
    return newFixedLengthResponse("Some response.");
}
票数 6
EN

Stack Overflow用户

发布于 2016-02-01 03:10:58

仅当上载一个或多个文件时才需要session.parseBody()。除了必须在html表单标记中提供enctype="multipart/ form -data“之外,您的代码都很好。所以你的html代码应该是:

代码语言:javascript
复制
<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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30966361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档