JavaHttpServer处理POST请求并读取html表单信息

JavaHttpServer处理POST请求并读取html表单信息,java,http,post,httpserver,Java,Http,Post,Httpserver,我正在尝试用java编写一个简单的HTTP服务器,它可以处理和读取来自html表单的POST请求 public static void main(String[] args) throws Exception { HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0); server.createContext("/test", new MyHandler()); server.setExecutor(null)

我正在尝试用java编写一个简单的HTTP服务器,它可以处理和读取来自html表单的POST请求

public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/test", new MyHandler());
server.setExecutor(null); 
server.start();
}
 static class MyHandler implements HttpHandler {

   @Override
    public void handle(HttpExchange he) throws IOException {
     system.out.println("Serving the request");

     if (he.getRequestMethod().equalsIgnoreCase("POST")) {
  try {
     Headers requestHeaders = he.getRequestHeaders();
     Set<Map.Entry<String, List<String>>> entries = requestHeaders.entrySet();

     int contentLength = Integer.parseInt(requestHeaders.getFirst("Content-length"));
     System.out.println(""+requestHeaders.getFirst("Content-length"));

     InputStream is = he.getRequestBody();

     byte[] data = new byte[contentLength];
     int length = is.read(data);

     Headers responseHeaders = he.getResponseHeaders();

     he.sendResponseHeaders(HttpURLConnection.HTTP_OK, contentLength);

     OutputStream os = he.getResponseBody();

     os.write(data);
     he.close();

     } catch (NumberFormatException | IOException e) {
     }
     }

    }
    }
    }
publicstaticvoidmain(字符串[]args)引发异常{
HttpServer server=HttpServer.create(新的InetSocketAddress(8000),0);
createContext(“/test”,new MyHandler());
server.setExecutor(空);
server.start();
}
静态类MyHandler实现HttpHandler{
@凌驾
公共无效句柄(HttpExchange he)引发IOException{
system.out.println(“服务请求”);
if(he.getRequestMethod().equalsIgnoreCase(“POST”)){
试一试{
Headers requestHeaders=he.getRequestHeaders();
Set entries=requestHeaders.entrySet();
int contentLength=Integer.parseInt(requestHeaders.getFirst(“内容长度”));
System.out.println(“+requestHeaders.getFirst(“内容长度”));
InputStream=he.getRequestBody();
字节[]数据=新字节[contentLength];
int length=is.read(数据);
Headers responseHeaders=he.getResponseHeaders();
sendResponseHeaders(HttpURLConnection.HTTP_OK,contentLength);
OutputStream os=he.getResponseBy();
写(数据);
他。关闭();
}捕获(NumberFormatException | IOE异常){
}
}
}
}
}
上面的代码从html表单读取post数据,并在浏览器窗口中给出输出
但是我想在java控制台中显示表单信息,那么我该怎么做呢?所以请帮助我。

我没有测试它,因为我没有准备好发送POST消息的表单,或者不知道如何从头创建HTTP POST消息

您可以使用字符串类将已读取的数据打印到控制台:

System.out.print(new String(data));

当你发布代码时,它应该可以工作。Java区分大小写,因此system.out与system.out有所不同。我更正并格式化了您的代码。我的编辑被拒绝,可能是因为我不小心添加了一行。也许你可以自己修好。