【轉】Android Http Server

來源:互聯網
上載者:User

標籤:

Android Http Server

引言         Android如何構建Http伺服器呢?本文的小例子,約莫著,還是能做個參考的^^。恩,例子實現的是PC瀏覽手機檔案,支援了下載和刪除。  準備         Http協議現今還是RFC2616吧,其基礎的知識還是有必要瞭解的。弄份協議規範書參考,是個不錯的選擇。之後呢,就可以開始了^^。          起初,想自己寫個Http伺服器學習來著,後來懶了==。有興趣的,推薦NanoHTTPD,很小型的僅一個類的http伺服器,不過,只部分支援Http/1.1。當然還有更簡單的實現例子,不過,支援的就更少更單一了。         繼而,還是用了SDK內的HttpService實現的。該部分api源自apache httpcomponents項目中的http core。由於SDK的不同版本,在使用細節上與最新的http core還是有很多小差異的。至於本文例子,是api-8上的實現。  建立 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(); } 
啟動 Server         建立了個WebService,將WebServer套進去,實現Service方式。介面很簡單,就一個按鈕,啟動如下: 訪問 Server         筆記本訪問上述網址唄。  當目錄存在且可讀時才有上述畫面,不然會簡單報個404、403什麼的頁面。當可寫時,增加刪除選項。返迴響應頁面,在HttpFileHandler內處理的。         1)下載         檔案夾:會自動打包成zip下載。其在HttpZipHandler內處理的。         檔案:自動判斷類型,或顯示或下載。沒多做處理,仍就是HttpFileHandler處理的。         2)刪除         會提示是否刪除。確定刪除的話,會等處理結束提示完成,繼而確認自動重新整理。用的jquery impromptu外掛程式,相關css、js在assets/wfs目錄內。CopyUtil提供了複製assets目錄至系統目錄的方法。  後記         前段時間開始看其他‘亂糟糟’的東西了。Android的小例子可能不太會再寫了==。            超進化版傳送門^^   本文源碼:http://pan.baidu.com/s/1rIYz6   本文轉自:http://vaero.blog.51cto.com/4350852/939413  from: http://www.cnblogs.com/sishuiliuyun/p/3461084.html

【轉】Android Http Server

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.