Android Http Servercss
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部分代碼:
-
- HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry();
-
- reqistry.register("*" + SUFFIX_ZIP, new HttpZipHandler(webRoot));
- reqistry.register("*" + SUFFIX_DEL, new HttpDelHandler(webRoot));
- reqistry.register("*", new HttpFileHandler(webRoot));
-
- httpService.setHandlerResolver(reqistry);
-
- isLoop = true;
- while (isLoop && !Thread.interrupted()) {
-
- Socket socket = serverSocket.accept();
-
- DefaultHttpServerConnection conn = new DefaultHttpServerConnection();
- conn.bind(socket, params);
-
- Thread t = new WorkerThread(httpService, conn);
- t.setDaemon(true);
- t.start();
- }
4
啓動
Server
建立了個WebService,將WebServer套進去,實現Service方式。界面很簡單,就一個按鈕,啓動以下:
![http server](http://static.javashuo.com/static/loading.gif)
5
訪問
Server
筆記本訪問上述網址唄。
![http server](http://static.javashuo.com/static/loading.gif)
![http server](http://static.javashuo.com/static/loading.gif)
當目錄存在且可讀時纔有上述畫面,否則會簡單報個40四、403什麼的頁面。當可寫時,增長刪除選項。返回響應頁面,在HttpFileHandler內處理的。
1)下載
文件夾:會自動打包成zip下載。其在HttpZipHandler內處理的。
文件:自動判斷類型,或顯示或下載。沒多作處理,仍就是HttpFileHandler處理的。
2)刪除
會提示是否刪除。肯定刪除的話,會等處理結束提示完成,繼而確認自動刷新。
![http server](http://static.javashuo.com/static/loading.gif)
用的jquery impromptu插件,相關css、js在assets/wfs目錄內。CopyUtil提供了複製assets目錄至系統目錄的方法。
6
後記
前段時間開始看其餘‘亂糟糟’的東西了。Android的小例子可能不太會再寫了==。
本文出自 「-_--___---_-」 博客,請務必保留此出處http://vaero.blog.51cto.com/4350852/939413jquery
附件下載:Android HttpServerweb