2015-06-21 330 views
1

我已經下載了最新的NanoHTTPD從鏈接: https://raw.githubusercontent.com/NanoHttpd/nanohttpd/master/core/src/main/java/fi/iki/elonen/NanoHTTPD.javaNanoHTTPD無法處理POST參數

當處理非常基本的POST例如,調用session.getParms()返回空映射。我的代碼是:

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

將返回:

{} 

HTML代碼觸發nanoHTTPD是:

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

</body> 
</html> 

這一切都看起來不錯。你有沒有在我的代碼中看到任何可疑的東西,或者nanoHTTPD還不夠成熟?

回答

4

在處理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

session.parseBody(),如果您上傳一個或多個文件時才需要。您的代碼沒問題,除非您必須在您的html表單標籤中提供enctype =「multipart/form-data」。所以,你的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>