基于java的小型HTTP服务器:NanoHTTPD
项目中需要做一个wifi直连查看文件、播放视频、下载文件等功能,因此需要做个基于Android的webservice,一起来学习一下NanoHTTPD。
NanoHTTPD
根据gtihup的描述:NanoHTTPD – a tiny web server in Java。轻量级的小型 HTTP服务器。
使用
1,导包: implementation’org.nanohttpd:nanohttpd:2.2.0’
2,新建servlet,继承NanoHTTPD
3,构造函数 HttpServer(int port)和HttpServer(String hostname, int port)。
4,处理请求方法serve();
public class HttpServer extends NanoHTTPD {
public HttpServer(int port) {
super(port);
}
public HttpServer(String hostname, int port) {
super(hostname, port);
}
@Override
public Response serve(IHTTPSession session) {
//bo business
}
}
5,获取GET方法请求参数:
Map<String, String> parms = session.getParms();
6,获取请求方法类型:
Method method = session.getMethod();
7,POST获取参数:
session.parseBody(new HashMap());//解决获取不到post参数
Map<String, String> parms = session.getParms();
8,创建简单响应头:
newFixedLengthResponse(“receive request”);
9, 启动服务:
private HttpServer mHttpServer = null;
try {
if (mHttpServer == null) {
mHttpServer = new HttpServer(WebServiceConfig.URL, WebServiceConfig.PORT);
}
mHttpServer.start();
} catch (IOException e) {
e.printStackTrace();
}
不适用记得销毁:
if (mHttpServer != null)
mHttpServer.stop();
另
遇到的坑:文件在线播放需要做断点续传和分段,不然缓冲会很慢。