【轉】Android Http Server

原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本聲明。不然將追究法律責任。 http://vaero.blog.51cto.com/4350852/939413

 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部分代碼:
 
  1. // 建立HTTP請求執行器註冊表 
  2. HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry(); 
  3. // 增長HTTP請求執行器 
  4. reqistry.register("*" + SUFFIX_ZIP, new HttpZipHandler(webRoot)); 
  5. reqistry.register("*" + SUFFIX_DEL, new HttpDelHandler(webRoot)); 
  6. reqistry.register("*"new HttpFileHandler(webRoot)); 
  7. // 設置HTTP請求執行器 
  8. httpService.setHandlerResolver(reqistry); 
  9. /* 循環接收各客戶端 */ 
  10. isLoop = true
  11. while (isLoop && !Thread.interrupted()) { 
  12.     // 接收客戶端套接字 
  13.     Socket socket = serverSocket.accept(); 
  14.     // 綁定至服務器端HTTP鏈接 
  15.     DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); 
  16.     conn.bind(socket, params); 
  17.     // 派送至WorkerThread處理請求 
  18.     Thread t = new WorkerThread(httpService, conn); 
  19.     t.setDaemon(true); // 設爲守護線程 
  20.     t.start(); 
 
4 啓動 Server
         建立了個WebService,將WebServer套進去,實現Service方式。界面很簡單,就一個按鈕,啓動以下:

http server

 
5 訪問 Server
         筆記本訪問上述網址唄。
 

http server

 

http server

 
         當目錄存在且可讀時纔有上述畫面,否則會簡單報個40四、403什麼的頁面。當可寫時,增長刪除選項。返回響應頁面,在HttpFileHandler內處理的。
         1)下載
         文件夾:會自動打包成zip下載。其在HttpZipHandler內處理的。
         文件:自動判斷類型,或顯示或下載。沒多作處理,仍就是HttpFileHandler處理的。
         2)刪除
         會提示是否刪除。肯定刪除的話,會等處理結束提示完成,繼而確認自動刷新。
 

         http server

 
         用的jquery impromptu插件,相關css、js在assets/wfs目錄內。CopyUtil提供了複製assets目錄至系統目錄的方法。
 
6 後記
         前段時間開始看其餘‘亂糟糟’的東西了。Android的小例子可能不太會再寫了==。
 
 
          超進化版傳送門^^
 

本文出自 「-_--___---_-」 博客,請務必保留此出處http://vaero.blog.51cto.com/4350852/939413jquery

附件下載:Android HttpServerweb

相關文章
相關標籤/搜索