Java从post请求中获取参数

时间:2015-04-10 20:24:05

标签: java post httpserver

我目前正在尝试用Java处理一些传入的POST请求。

到目前为止,部分工作。我可以收到请求,但我似乎无法提取随请求发送的参数和值。

以下是我目前收到请求的Java代码:

public HybridRemoteReceiver() {

try {
    System.out.println("running...");
    ServerSocket ss = new ServerSocket(3434);

    int i = 0;
    while (true) {
        Socket client = ss.accept();
        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        String line;

        while ((line = in.readLine()) != null) {
            if (line.length() == 0)
                break;
            i++;
        }
        in.close();
        client.close();
    }


} catch (Exception e) {
    e.printStackTrace();
}

}

我知道有一个名为HttpServer的类,但是这个类在Java中并不存在。

我在eclipse btw中使用java 1.8。

但是,我可以找到课程HttpExchangeHttpHandler,但似乎无法让它们发挥作用。

基本上我想要实现的是接收发送请求后发送的数据,而不是将任何内容发送回客户端。

我真的希望有人可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

使用像tomcat这样的servlet容器。

然后,研究Servlets(扩展HttpServlet),可以使用它的GET和POST方法。

这是POST。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        username = request.getParameter("username");

}

// username是一个通过POST从JSP发送的参数。

答案 1 :(得分:0)

如果您希望处理HTTP请求,最好使用像Tomcat这样的servlet容器。 Tomcat不会实现整个Java EE规范,但会为您提供servlet容器的实现,它将能够轻松处理post请求。这使您无需重新发明轮子,并且可以依靠许多项目中的成熟技术。

一旦servlet容器库在类路径上,您就可以使用HttpServletRequest之类的类。你有一个servlet容器站起来,Servlet声明并映射,就像调用HttpServletRequest#getParameter()方法一样简单。

答案 2 :(得分:0)

确实存在HttpServer类,它位于sun.net.httpserver包中的某个位置。

sun包和子包可以安全使用,不像com.sun包和子包,可以(重新)移动。

编辑:如果您愿意,您可以随时编写自己的服务器。如果您希望这样做,请确保它遵循定义您正在使用的HTTP版本的所有RFC。某些事情是没有必要的,你可以抛出501 Not Implemented。