我目前正在尝试用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。
但是,我可以找到课程HttpExchange
和HttpHandler
,但似乎无法让它们发挥作用。
基本上我想要实现的是接收发送请求后发送的数据,而不是将任何内容发送回客户端。
我真的希望有人可以帮我解决这个问题。
答案 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。