Android Http Server
Android Http Server
1 引言
Android如何构建Http服务器呢?本文的小例子,约莫着,还是能做个参考的^^。恩,例子实现的是PC浏览手机文件,支持了下载和删除。
2 准备
Http协议现今还是RFC2616吧,其基础的知识还是有必要了解的。弄份协议规范书参考,是个不错的选择。之后呢,就可以开始了^^。
起初,想自己写个Http服务器学习来着,后来懒了==。有兴趣的,推荐NanoHTTPD,很小型的仅一个类的http服务器,不过,只部分支持Http/1.1。当然还有更简单的实现例子,不过,支持的就更少更单一了。
继而,还是用了SDK内的HttpService实现的。该部分api源自apache httpcomponents项目中的http core。由于SDK的不同版本,在使用细节上与最新的http core还是有很多小差异的。至于本文例子,是api-8上的实现。
3 创建Server
创建WebServer,以HttpService实现服务器。其注册了3个请求处理,HttpFileHandler、HttpZipHandler、HttpDelHandler。当WebServer每接收一个连接,派发至WorkerThread,新线程处理每个请求。
WebServer部分代码:
// 创建HTTP请求执行器注册表 HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry(); // 增加HTTP请求执行器 reqistry.register("*" + SUFFIX_ZIP, new HttpZipHandler(webRoot)); reqistry.register("*" + SUFFIX_DEL, new HttpDelHandler(webRoot)); reqistry.register("*", new HttpFileHandler(webRoot)); // 设置HTTP请求执行器 httpService.setHandlerResolver(reqistry); /* 循环接收各客户端 */ isLoop = true; while (isLoop && !Thread.interrupted()) { // 接收客户端套接字 Socket socket = serverSocket.accept(); // 绑定至服务器端HTTP连接 DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); conn.bind(socket, params); // 派送至WorkerThread处理请求 Thread t = new WorkerThread(httpService, conn); t.setDaemon(true); // 设为守护线程 t.start(); }
4 启动Server
创建了个WebService,将WebServer套进去,实现Service方式。界面很简单,就一个按钮,启动如下:

5 访问Server
笔记本访问上述网址呗。


当目录存在且可读时才有上述画面,不然会简单报个404、403什么的页面。当可写时,增加删除选项。返回响应页面,在HttpFileHandler内处理的。
1)下载
文件夹:会自动打包成zip下载。其在HttpZipHandler内处理的。
文件:自动判断类型,或显示或下载。没多做处理,仍就是HttpFileHandler处理的。
2)删除
会提示是否删除。确定删除的话,会等处理结束提示完成,继而确认自动刷新。

用的jquery impromptu插件,相关css、js在assets/wfs目录内。CopyUtil提供了复制assets目录至系统目录的方法。
6 后记
前段时间开始看其他‘乱糟糟’的东西了。Android的小例子可能不太会再写了==。
本文源码:http://pan.baidu.com/s/1rIYz6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!